假设我有一个语法处理全局变量和 C 的一些变体的一些方法声明
program: (declaration)* (procedure)*;
declaration: typespec identifier ';';
procedure: typespec identifier '(' ')' ';';
typespec: 'char' | 'int';
identifier: ('a' .. 'z' | 'A' .. 'Z') ('A' - 'Z' | 'a' .. 'z' | '0' .. '9' | '_')*;
如果我喂它:
int MAX;
char proc();
语法为 int MAX;正确但随后它想将声明规则也应用于第二行,并且在到达 ( 时失败,此时我希望它回溯并应用下一个规则,这是程序的规则。有人可以告诉我为什么这没有发生?