Skip to content

Grammar specification

Rodri Pizarro edited this page Jul 9, 2020 · 6 revisions
DATA_TYPE:
'sample' | 'sound' | 'numeric' | 'argument' | 'group' | 'boolean' | 'buffer' | 'function' | 'string' ;
EOE:
';' ;
NAME:
'([a-z]|[A-Z]|_)([a-z]|[A-Z]|_|[0-9])*' ;
NUMBER:
'([0-9])*(.([0-9])+)?' ;
BOOLEAN_VALUE:
'true' | 'false' ;
BOOLEAN_OPERATOR:
'==' | '<' | '<=' | '>=' | '>' | '!=' | '&' | '|' ;
BOOLEAN_OPERATION:
BOOLEAN_VALUE | '(' VALUE BOOLEAN_OPERATOR VALUE ')' | VALUE BOOLEAN_OPERATOR VALUE | NAME | EXECUTION ;
MATH_OPERATOR:
'+' | '-' | '/' | '*' ;
MATH_OPERATION:
NUMBER | NAME | EXECUTION | MATH_OPERATION MATH_OPERATOR MATH_OPERATION | '(' MATH_OPERATION MATH_OPERATOR MATH_OPERATION ')' ;
ARRAY:
VALUE | VALUE ',' ARRAY ;
EXECUTION:
NAME '(' ARRAY ')' | NAME '.' EXECUTION ;
ARRAY:
VALUE | VALUE ',' ARRAY ;
STRING:
'"' * '"' ;
VALUE:
NAME | STRING | EXECUTION | 'null' | BOOLEAN_OPERATION | MATH_OPERATION | '(' ARRAY ')' | '[' ARRAY ']' ;
ASSIGNATION:
DATA_TYPE NAME '=' VALUE | NAME '=' VALUE ;
ARGUMENT:
DATA_TYPE NAME | DATA_TYPE NAME ',' ARGUMENT ;
DEFINITION:
DATA_TYPE NAME EOE | DATA_TYPE NAME '(' ARGUMENT ')' '{' PROGRAM 'return' VALUE '}' ;
FOR_LOOP:
'for' '(' NAME '=' VALUE ';' BOOLEAN_OPERATION ';' MATH_OPERATION ')' '{' PROGRAM '}' ;
IF:
'if' '(' BOOLEAN_OPERATION ')' '{' PROGRAM '}' | 'if' '(' BOOLEAN_OPERATION ')' '{' PROGRAM '}' 'else' '{' PROGRAM '}' ;
INSTRUCTION:
EOE | ASSIGNATION EOE | EXECUTION EOE | DEFINITION | FOR_LOOP | IF | 'break' EOE ;
PROGRAM:
INSTRUCTION | INSTRUCTION PROGRAM ;
Clone this wiki locally