diff options
Diffstat (limited to 'src/Language/Fiddle/Parser.hs')
-rw-r--r-- | src/Language/Fiddle/Parser.hs | 9 |
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 $ |