1
1
mirror of https://github.com/github/semantic.git synced 2024-11-25 11:04:00 +03:00
semantic/docs/core-grammar.md
2019-06-04 14:19:12 -04:00

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_])*
        | '#{' [^{}]+ '}'
        | '"' [^"]+ '"'