我有一个lex
文件,里面有我的规则,例如:
PROGRAM return Parser::PROGRAM;
PROGRAM_END return Parser::PROGRAM_END;
VARIABLES: return Parser::VARIABLES;
INSTRUCTIONS: return Parser::INSTRUCTIONS;
SKIP return Parser::SKIP;
. {
std::cerr << lineno() << ": ERROR." << std::endl;
exit(1);
}
并且当我尝试使用完全编译的(带有yacc
文件等)版本时,即使测试文件正确,也仅在测试文件上使用最后一条规则。
例如,这是这些规则的测试文件:
PROGRAM fst
INSTRUCTIONS:
SKIP
PROGRAM_END
对于这个文件,我只得到:1: ERROR
.
为什么会这样,我该如何解决?