为什么空格(' ')在我的代码中返回

本文关键字:返回 代码 EOF 空格 为什么 我的 | 更新日期: 2023-09-27 18:33:21

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:a=12//不给出错误
  • 示例 2:a = 12//行 1:6 输入时没有可行的替代方案 (EOF)

  • 所以在这里,我的问题是
    -为什么空格(' ')返回"输入时没有可行的替代方案(EOF)"?
    -查看我的输入语法:"a = 12"
    -注意:"a","="和"12"之间有一个空格。

为什么空格(' ')在我的代码中返回<EOF>

问题是,语法无法读取 ''t 以外的空格。 尝试向 WS 规则添加另一个空格字符。