summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Parser.hs
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-12-03 17:49:28 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-12-03 17:49:28 -0700
commitf371a310affd9501f48aa8ade4670f9a29070cad (patch)
tree3c7815e1d3672f425787855a0f25513cce49db9c /src/Language/Fiddle/Parser.hs
parent673c99472da3de2d52bd29fec91978166f008766 (diff)
downloadfiddle-f371a310affd9501f48aa8ade4670f9a29070cad.tar.gz
fiddle-f371a310affd9501f48aa8ade4670f9a29070cad.tar.bz2
fiddle-f371a310affd9501f48aa8ade4670f9a29070cad.zip
Implement new syntactic-sugar for skip_to(). Allows specifying the offset directly on a register
Diffstat (limited to 'src/Language/Fiddle/Parser.hs')
-rw-r--r--src/Language/Fiddle/Parser.hs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/Language/Fiddle/Parser.hs b/src/Language/Fiddle/Parser.hs
index e91fa41..b2bb6f7 100644
--- a/src/Language/Fiddle/Parser.hs
+++ b/src/Language/Fiddle/Parser.hs
@@ -238,6 +238,7 @@ objTypeDeclP =
RegisterDecl Vacant modifier . Perhaps
<$> optionMaybe ident
<*> fmap RightV exprInParenP
+ <*> (Present . RegisterPosition <$> optionMaybe (tok TokAtSign >> litNumP))
<*> optionMaybe (tok TokColon *> registerBodyP)
)
@@ -338,14 +339,18 @@ enumConstantDeclP =
constExpressionP :: Pa (ConstExpression u)
constExpressionP = withMeta $ ConstExpression . RightV <$> expressionP
+litNumP :: P Text
+litNumP =
+ token
+ ( \case
+ (TokLitNum num) -> Just num
+ _ -> Nothing
+ )
+
expressionP :: Pa (Expression u)
expressionP =
withMeta $
- token
- ( \case
- (TokLitNum num) -> Just (LitNum $ LeftV num)
- _ -> Nothing
- )
+ (LitNum . LeftV <$> litNumP)
<|> (Var <$> name)
body :: P [Token SourceSpan]