diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2024-11-26 22:55:13 -0700 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2024-11-26 22:55:13 -0700 |
commit | 7f5b64062ed975f856892d95e74b8d2f917ade66 (patch) | |
tree | 762b837c9fd461b8e1be5e852a3a560eeeda4d78 /src/Language/Fiddle/Parser.hs | |
parent | 4f43488bdd32b610f7771dc01a12541fdb17b9af (diff) | |
download | fiddle-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.hs | 13 |
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 ) |