From 9667c21e8be74652fe9accd1f4b997edac09eca8 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sun, 14 Feb 2010 18:55:51 -0800 Subject: [PATCH] op precedence pseudo-bnf --- op-precedence.txt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 op-precedence.txt diff --git a/op-precedence.txt b/op-precedence.txt new file mode 100644 index 0000000..23ac025 --- /dev/null +++ b/op-precedence.txt @@ -0,0 +1,25 @@ +keyword := 'if' | 'while' | 'until' | 'repeat' | 'for' | 'do' | 'break' | + 'print' | 'else' | 'end' +identifier := /[a-zA-Z][[:alnum:]]+/ +number := /\d+/ +boolean-literal := 'true' | 'false' + +factor := '(' boolean-expression ')' | identifier | number +signed-factor := '-' factor | '+' factor | factor +term := signed-factor (/[*/]/ signed-factor)* +arithmetic-expression := term (/[-+]/ term)* + +bit-op := '|' | '&' | '^' +bit-expression := arithmetic-expression (bit-op arithmetic-expression)* + +rel-op := '==' | '!=' | '>' | '>=' | '<' | '<=' +relation := bit-expression (rel-op bit-expression)* + +boolean-factor := boolean-literal | relation +not-factor := '!' boolean-factor | boolean-factor +boolean-term := not-factor ('&&' not-factor)* +boolean-expression := boolean-term ('||' boolean-term)* + +assignment := identifier '=' boolean-expression + +expression := assignment | boolean-expression