Я провожу исследование, создавая язык программирования с использованием antlr4, и целый день пытаюсь решить проблему, когда после удаления пробелов два слова становятся одним токеном.
Это моя грамматика для antlr:
Я провожу исследование, создавая язык программирования с использованием antlr4, и целый день пытаюсь решить проблему, когда после удаления пробелов два слова становятся одним токеном. Это моя грамматика для antlr: [code]grammar Grammar;
start: (statement ';')*;
//needs expressions extension statement : variable | //class | if | function | loop | functionCall | show ;
variable : TYPE ID ('=' VAR_TYPE)? | ... ;
array : TYPE ID '[]' ('=' '[' VAR_TYPE (',' VAR_TYPE)* ']')? ;
//needs expressions extension function : (ACCESS TYPE ID '(' ID* ')' '{' ( variable | if | loop | functionCall ) 'return' VAR_TYPE '}') | (ACCESS 'void' ID '(' ID* ')' '{' ( variable | if | loop | functionCall ) '}') ;
//needs expressions extension if: 'if' (ID | VAR_TYPE) COMPARISON (ID | VAR_TYPE) ':' ( '\t' variable | '\t' if | '\t' loop | '\t' functionCall | '\t' show )* ('else if' (ID | VAR_TYPE) COMPARISON (ID | VAR_TYPE) ':' ( '\t' variable | '\t' if | '\t' loop | '\t' functionCall | '\t' show )* )* ('else' ':' ( '\t' variable | '\t' if | '\t' loop | '\t' functionCall | '\t' show )* )? ;
loop: 'foreach' ID 'in' ID ':' ( '\t' variable | '\t' if | '\t' loop | '\t' functionCall | '\t' show )* ;
functionCall: (ID '.')? ID '()';
//needs expressions extension show: 'show' '(' (ID | VAR_TYPE)? ('+' (ID | VAR_TYPE))* ')';