add grammar
authorMart Lubbers <mart@martlubbers.net>
Thu, 28 Mar 2019 10:17:24 +0000 (11:17 +0100)
committerMart Lubbers <mart@martlubbers.net>
Thu, 28 Mar 2019 10:17:24 +0000 (11:17 +0100)
grammar.txt [new file with mode: 0644]

diff --git a/grammar.txt b/grammar.txt
new file mode 100644 (file)
index 0000000..2072dbb
--- /dev/null
@@ -0,0 +1,23 @@
+prog  := (tdef | func)*
+
+tdef  := '::' id id* '=' tcons ';'
+tcons := id type* ('|' id type*)*
+type  := 'Int'
+       | 'Bool'
+       | id id*
+       | '(' type ')'
+
+func  := funid id* '=' expr ';'
+funid := id | op ('ifxr' | 'ifxl') num
+expr  := expr expr
+       | expr op expr
+       | num
+       | 'True' | 'False'
+       | '(' (expr | op) ')'
+       | 'code'? id
+       | '\\' id '.' expr
+
+num   := (0 | 1 | .. | 9)*
+id    := (a | b | .. | z | A | B | .. | Z)*
+op    := '!' | '@' | '#' | '$' | '%' | '^' | '&' | '*' | '=' | '+' | '/' | '?'
+       | '-' | '_' | '|' | ''' | '\' | '"' | '<' | '>' | '.' | ':'