summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Parser.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/Fiddle/Parser.hs')
-rw-r--r--src/Language/Fiddle/Parser.hs7
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)