1
grammar VB6;
/*
* Parser Rules
*/
compileUnit: module+ EOF;
module:declareStmt ;
declareStmt :WS? eqnStmt #eqStatement;
eqnStmt: VAR WS? EQ WS? NUM;
/*
* Lexer Rules
*/
NUM:[0-9]+;
VAR: LETTER LETTERORDIGIT*;
EQ : '=';
WS : [ \t]+;
// letters
fragment LETTER : [a-zA-Z];
fragment LETTERORDIGIT : [a-zA-Z0-9];
// case insensitive chars
fragment A:('a'|'A');
fragment B:('b'|'B');
fragment C:('c'|'C');
fragment D:('d'|'D');
fragment E:('e'|'E');
fragment F:('f'|'F');
fragment G:('g'|'G');
fragment H:('h'|'H');
fragment I:('i'|'I');
fragment J:('j'|'J');
fragment K:('k'|'K');
fragment L:('l'|'L');
fragment M:('m'|'M');
fragment N:('n'|'N');
fragment O:('o'|'O');
fragment P:('p'|'P');
fragment Q:('q'|'Q');
fragment R:('r'|'R');
fragment S:('s'|'S');
fragment T:('t'|'T');
fragment U:('u'|'U');
fragment V:('v'|'V');
fragment W:('w'|'W');
fragment X:('x'|'X');
fragment Y:('y'|'Y');
fragment Z:('z'|'Z');
- Выше кода является грамматика для объявления переменной
- Пример 1: а = 12 // не давая ошибку
Пример 2: а = 12 // строка 1: 6 жизнеспособной альтернативы на входе (EOF)Почему пробел ('') возвращается <EOF> в мой код?
Так вот, мой вопрос
-Почему не белое пространство (»«) возвращение „реальной альтернативы на входе (EOF)“?
-Проверьте мою грамматику для ввода: 'a = 12'
-Примечание: Между 'a', '=' и '12' имеется пробел.