v1 grammar - graeme-lockley/experiment-safe-language GitHub Wiki

MODULE := { IMPORT } { DECL } [ EXPR1 ]

IMPORT := 'import' CONSTANT_URL 'as' IDENTIFIER ';'

DECL := IDENTIFIER+ '=' EXPR1 [ 'assumptions' '{' EXPR1 { ';' EXPR1 } ] ';'

EXPR1 := 'if' EXPR1 'then' EXPR1 'else' EXPR1 | '{' EXPR1 { ';' EXPR1 } '}'

EXPR2 := EXPR3 { '||' EXPR3 }

EXPR3 := EXPR4 { '&&' EXPR4 }

EXPR4 := EXPR5 { ( '==' | '!=' ) EXPR5 }

EXPR5 := EXPR6 { ( '<' | '<=' | '>' | '>=' ) EXPR6 }

EXPR6 := EXPR7 { '++' | EXPR7 }

EXPR7 := EXPR8 { ( '+' | '-') EXPR8 }

EXPR8 := EXPR9 { ( '*' | '/' ) EXPR9 }

EXPR9 := EXPR10 | ( '!' | '+' | '-' ) EXPR9

EXPR10 := EXPR11 { 'o' EXPR11 }

EXPR11 := EXPR12 { EXPR12 }

EXPR12 := '(' EXPR1 ')' | '(' ( '||' | '&&' | '==' | '!=' | '<' | '<=' | '>' | '>=' | '++' | '+' | '-' | '*' | '/' ) ')' | '(' ')' | IDENTIFIER [ '.' IDENTIFIER ] | '' IDENTIFIER { IDENTIFIER } '->' EXPR1 | CONSTANT_CHAR | CONSTANT_INTEGER | 'true' | 'false' | CONSTANT_INTEGER

⚠️ **GitHub.com Fallback** ⚠️