From ef35c9dea2d8197e72d9a4bc8ed0c8f85f6194f4 Mon Sep 17 00:00:00 2001 From: Adharsh Kamath Date: Tue, 15 Apr 2025 15:45:21 -0500 Subject: [PATCH] new grammar for invariants --- syncode/parsers/grammars/invariants.lark | 34 +++++++++++++----------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/syncode/parsers/grammars/invariants.lark b/syncode/parsers/grammars/invariants.lark index 0e256a52..53c8c0b9 100644 --- a/syncode/parsers/grammars/invariants.lark +++ b/syncode/parsers/grammars/invariants.lark @@ -1,8 +1,8 @@ -start: invariants +start: "```" "\n" invariants "```" -invariants: (invariant /\n+/)+ -> multiple_invariants +invariants: invariant+ -invariant: "loop" /\s+/ "invariant" /\s+/ pred ";" -> invariant +invariant: "loop" "invariant" pred ";" "\n" STRING: /"([^"\\]|\\.)*"/ @@ -12,15 +12,15 @@ REAL: /[0-9]+\.[0-9]+/ CHAR: /'([^'\\]|\\.)'/ -TRUE: "\true" +TRUE: "\\true" -FALSE: "\false" +FALSE: "\\false" -IDENTIFIER: /[a-zA-Z_][a-zA-Z0-9_]*/ +IDENTIFIER.-1: /[a-zA-Z_][a-zA-Z0-9_]*/ unary_logic_op: "~" -bin_logic_op: "&&" | "||" | "=>" | "<=>" +bin_logic_op: "&&" | "||" | "==>" | "<==>" rel_arith_op: "==" | "!=" | "<" | "<=" | ">" | ">=" @@ -33,16 +33,18 @@ expr: INTEGER | CHAR | STRING | IDENTIFIER - | IDENTIFIER /\s+/ "(" /\s+/ expr /\s+/ ("," /\s+/ expr)* /\s+/ ")" - | "(" /\s+/ expr /\s+/ ")" - | unary_arith_op /\s+/ expr - | expr /\s+/ bin_arith_op /\s+/ expr - | expr /\s+/ "?" /\s+/ expr /\s+/ ":" /\s+/ expr + | IDENTIFIER "(" expr ("," expr)* ")" + | "(" expr ")" + | unary_arith_op expr + | expr bin_arith_op expr + | expr "?" expr ":" expr pred: TRUE | FALSE - | "(" /\s+/ pred /\s+/ ")" + | "(" pred ")" | expr - | unary_logic_op /\s+/ pred - | pred /\s+/ bin_logic_op /\s+/ pred - | expr /\s+/ rel_arith_op /\s+/ expr + | unary_logic_op pred + | pred bin_logic_op pred + | expr rel_arith_op expr + +%ignore /[\t ]/