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.hs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/Language/Fiddle/Parser.hs b/src/Language/Fiddle/Parser.hs
index ebbd51b..dea2dd5 100644
--- a/src/Language/Fiddle/Parser.hs
+++ b/src/Language/Fiddle/Parser.hs
@@ -146,7 +146,7 @@ fiddleDeclP = do
<$> name
<*> defer body packageBodyP
KWUsing -> UsingDecl Witness <$> name
- KWLocation -> LocationDecl noQMd <$> ident <*> (tok TokEq >> expressionP)
+ KWLocation -> LocationDecl noQMd <$> ident <*> (tok TokEq >> constExpressionP)
KWBits -> BitsDecl noQMd <$> ident <*> (tok TokColon >> bitTypeP)
KWImport -> ImportDecl <$> importStatementP
KWType ->
@@ -176,7 +176,7 @@ objTypeP = do
recur =
( do
withMeta $ do
- expr <- tok TokLBracket *> expressionP <* tok TokRBracket
+ expr <- tok TokLBracket *> constExpressionP <* tok TokRBracket
recur' <- recur
return (\met base -> recur' (ArrayObjType base expr met))
)
@@ -274,7 +274,7 @@ registerBitsTypeRefP = do
recurP =
( do
withMeta $ do
- expr <- tok TokLBracket *> expressionP <* tok TokRBracket
+ expr <- tok TokLBracket *> constExpressionP <* tok TokRBracket
recur' <- recurP
return (\met base -> recur' (RegisterBitsArray base expr met))
)
@@ -311,6 +311,9 @@ enumConstantDeclP =
(tok KWReserved >> EnumConstantReserved <$> (tok TokEq >> expressionP))
<|> (EnumConstantDecl <$> ident <*> (tok TokEq >> expressionP))
+constExpressionP :: Pa (ConstExpression u)
+constExpressionP = withMeta $ ConstExpression . RightV <$> expressionP
+
expressionP :: Pa (Expression u)
expressionP =
withMeta $