summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Parser.hs
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-26 22:55:13 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-11-26 22:55:13 -0700
commit7f5b64062ed975f856892d95e74b8d2f917ade66 (patch)
tree762b837c9fd461b8e1be5e852a3a560eeeda4d78 /src/Language/Fiddle/Parser.hs
parent4f43488bdd32b610f7771dc01a12541fdb17b9af (diff)
downloadfiddle-7f5b64062ed975f856892d95e74b8d2f917ade66.tar.gz
fiddle-7f5b64062ed975f856892d95e74b8d2f917ade66.tar.bz2
fiddle-7f5b64062ed975f856892d95e74b8d2f917ade66.zip
Added syntax for skip_to and buffer.
buffer tells fiddle to create a buffer of a number of bytes. skip_to tells fiddle to skip to some new offset. It's essentially an unnamed buffer
Diffstat (limited to 'src/Language/Fiddle/Parser.hs')
-rw-r--r--src/Language/Fiddle/Parser.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Language/Fiddle/Parser.hs b/src/Language/Fiddle/Parser.hs
index 415852c..c3056bd 100644
--- a/src/Language/Fiddle/Parser.hs
+++ b/src/Language/Fiddle/Parser.hs
@@ -199,6 +199,9 @@ asConstP fn = withMeta $ ConstExpression . RightV <$> fn
exprInParenP :: Pa (Expression u)
exprInParenP = tok TokLParen *> expressionP <* tok TokRParen
+inParenP :: Pa a -> Pa a
+inParenP p = tok TokLParen *> p <* tok TokRParen
+
objTypeBodyP :: BodyType F (Commented SourceSpan) -> Pa ObjTypeBody
objTypeBodyP bt =
withMeta $
@@ -212,6 +215,16 @@ objTypeDeclP =
AssertPosStatement Witness <$> exprInParenP
)
<|> ( do
+ tok_ KWSkipTo
+ SkipToStatement Witness Vacant <$> inParenP constExpressionP
+ )
+ <|> ( do
+ tok_ KWBuffer
+ BufferDecl Vacant . Perhaps
+ <$> optionMaybe ident
+ <*> inParenP constExpressionP
+ )
+ <|> ( do
tok_ KWReserved
ReservedDecl Witness <$> exprInParenP
)