BNF for slang.jj
TERMINALS
Commands
<IF>: "if"
<ELSE>: "else"
<WHILE>: "while"
<REPEAT>: "repeat"
<DEFINE>: "def"
<RETURN>: "return"
<SOURCE>: "source"
Numbers and identifiers
<INT>: (<DIGIT>)+
<ID>: <LETTER> (<LETTER>|<DIGIT>|<OTHER_IN_ID>)*
<LETTER>: ["A"-"Z", "a"-"z"]
<DIGIT>: ["0"-"9"]
<OTHER_IN_ID>: "_"
<STR>: "\"" (~["\"","\n","\r"])* "\""
Punctuation
<LPAREN>: "("
<RPAREN>: ")"
<LBRACE>: "{"
<RBRACE>: "}"
<LBRACKET>: "["
<RBRACKET>: "]"
<SEMICOLON>: ";"
<COMMA>: ","
Operators
<ASSIGN>: "="
<REASSIGN>: ":="
<DEFASSIGN>: "::="
<OR>: "||"
<AND>: "&&"
<NOT>: "~"
<BANG>: "!"
<PLUS>: "+"
<MINUS>: "-"
<TIMES>: "*"
<DIV>: "/"
<RELEQ>: "=="
<RELNE>: "!="
<RELGT>: ">"
<RELGE>: ">="
<RELLT>: "<"
<RELLE>: "<="
NON-TERMINALS
|