From 7f5b64062ed975f856892d95e74b8d2f917ade66 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Tue, 26 Nov 2024 22:55:13 -0700 Subject: 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 --- src/Language/Fiddle/Parser.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/Language/Fiddle/Parser.hs') 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 $ @@ -211,6 +214,16 @@ objTypeDeclP = tok_ KWAssertPos 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 -- cgit