Last active
March 17, 2020 11:36
-
-
Save koteyur/cc897244ea693eb7b189e337ea7d03ca to your computer and use it in GitHub Desktop.
Fix for loop
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
grammar EIScript; | |
script | |
: block* ; | |
block | |
: globalVars | |
| declareScript | |
| scriptBlock | |
| worldScript | |
; | |
globalVars | |
: K_GLOBALVARS varsBlock ; | |
declareScript | |
: K_DECLARESCRIPT IDENTIFIER varsBlock ; | |
scriptBlock | |
: K_SCRIPT IDENTIFIER '(' ifBlock+ ')' ; | |
worldScript | |
: K_WORLDSCRIPT statements ; | |
ifBlock | |
: K_IF conditions K_THEN statements ; | |
conditions | |
: '(' functionCall* ')' ; | |
statements | |
: '(' statement* ')' ; | |
statement | |
: functionCall | |
| IDENTIFIER '=' expression | |
| (K_FOR | K_FORIF) paramList statements | |
; | |
functionCall | |
: IDENTIFIER paramList ; | |
expression | |
: IDENTIFIER | |
| NUMBER | |
| STRING | |
| functionCall | |
; | |
paramList | |
: '(' (expression (',' expression)*)? ')' ; | |
varsBlock | |
: '(' (varDecl (',' varDecl)*)? ')' ; | |
varDecl | |
: IDENTIFIER ':' typeName ; | |
typeName | |
: K_FLOAT | K_GROUP | K_OBJECT | K_STRING ; | |
K_GLOBALVARS : G L O B A L V A R S ; | |
K_DECLARESCRIPT : D E C L A R E S C R I P T ; | |
K_SCRIPT : S C R I P T ; | |
K_WORLDSCRIPT : W O R L D S C R I P T ; | |
K_IF : I F ; | |
K_THEN : T H E N ; | |
K_FLOAT : F L O A T ; | |
K_GROUP : G R O U P ; | |
K_OBJECT : O B J E C T ; | |
K_STRING : S T R I N G ; | |
K_FOR : F O R ; | |
K_FORIF : F O R I F ; | |
IDENTIFIER | |
: [#_a-zA-Z] [#_\-a-zA-Z0-9]* ; | |
NUMBER | |
: '-'? DIGIT+ ('.' DIGIT+)? ; | |
STRING | |
: '"' ~[\r\n]*? '"' ; | |
SINGLE_LINE_COMMENT | |
: '//' ~[\r\n]* -> channel(HIDDEN) ; | |
MULTILINE_COMMENT | |
: '/*' .*? ('*/' | EOF) -> channel(HIDDEN) ; | |
WHITESPACE | |
: [ \t\r\n] -> skip ; | |
fragment DIGIT : [0-9] ; | |
fragment A : [aA] ; | |
fragment B : [bB] ; | |
fragment C : [cC] ; | |
fragment D : [dD] ; | |
fragment E : [eE] ; | |
fragment F : [fF] ; | |
fragment G : [gG] ; | |
fragment H : [hH] ; | |
fragment I : [iI] ; | |
fragment J : [jJ] ; | |
fragment K : [kK] ; | |
fragment L : [lL] ; | |
fragment M : [mM] ; | |
fragment N : [nN] ; | |
fragment O : [oO] ; | |
fragment P : [pP] ; | |
fragment Q : [qQ] ; | |
fragment R : [rR] ; | |
fragment S : [sS] ; | |
fragment T : [tT] ; | |
fragment U : [uU] ; | |
fragment V : [vV] ; | |
fragment W : [wW] ; | |
fragment X : [xX] ; | |
fragment Y : [yY] ; | |
fragment Z : [zZ] ; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment