diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2024-10-19 01:05:10 -0600 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2024-10-19 01:05:10 -0600 |
commit | e9ed9fe9aae2c0ac913cf1d175166e983e0a1b30 (patch) | |
tree | 77ef1aaccd3527c06edff1c3120147150829bf3f /src/Language/Fiddle/Parser.hs | |
parent | e753d874458dce4ad480caba97fde8b73d703821 (diff) | |
download | fiddle-e9ed9fe9aae2c0ac913cf1d175166e983e0a1b30.tar.gz fiddle-e9ed9fe9aae2c0ac913cf1d175166e983e0a1b30.tar.bz2 fiddle-e9ed9fe9aae2c0ac913cf1d175166e983e0a1b30.zip |
Provide more data during qualification about how a path is qualified.
Now it includes information about the package a symobl is in. The object
its in and the register its in. This allows better code generation in
the backend that's somewhat more organized.
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) |