diff options
Diffstat (limited to 'src/Language/Fiddle/Parser.hs')
-rw-r--r-- | src/Language/Fiddle/Parser.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/Language/Fiddle/Parser.hs b/src/Language/Fiddle/Parser.hs index dea2dd5..7ef5ac4 100644 --- a/src/Language/Fiddle/Parser.hs +++ b/src/Language/Fiddle/Parser.hs @@ -190,6 +190,9 @@ objTypeP = do AnonymousObjType Witness <$> defer body (objTypeBodyP t) ) +asConstP :: Pa (Expression u) -> Pa (ConstExpression u) +asConstP fn = withMeta $ ConstExpression . RightV <$> fn + exprInParenP :: Pa (Expression u) exprInParenP = tok TokLParen *> expressionP <* tok TokRParen @@ -258,7 +261,7 @@ registerBitsDeclP = tok KWReserved >> ReservedBits <$> exprInParenP ) <|> (BitsSubStructure <$> registerBodyP <*> optionMaybe ident) - <|> ( DefinedBits Vacant + <|> ( DefinedBits Vacant . Perhaps <$> optionMaybe modifierP <*> ident <*> (tok TokColon >> registerBitsTypeRefP) @@ -282,7 +285,7 @@ registerBitsTypeRefP = do baseTypeRef = withMeta $ - (RegisterBitsJustBits <$> exprInParenP) + (RegisterBitsJustBits <$> asConstP exprInParenP) <|> (RegisterBitsAnonymousType Witness <$> anonymousBitsTypeP) <|> (RegisterBitsReference noQMd <$> name) |