mirror of
https://github.com/github/semantic.git
synced 2024-11-24 00:42:33 +03:00
608 B
608 B
Semantic Core grammar
This is an EBNF grammar for the (experimental) core IR language.
expr ::= expr '.' expr
| expr ' '+ expr
| '{' expr (';' expr)* ';'? '}'
| 'if' expr 'then' expr 'else' expr
| ('lexical' | 'import' | 'load') expr
| lit
| 'let'? lvalue '=' expr
| '(' expr ')'
lvalue ::= ident
| parens expr
lit ::= '#true'
| '#false'
| 'unit'
| 'frame'
| lambda
| ident
lambda ::= ('λ' | '\') ident ('->' | '→') expr
ident ::= [A-z_] ([A-z0-9_])*
| '#{' [^{}]+ '}'
| '"' [^"]+ '"'