我对分析器生成器使用了Flex和Bison,但在扫描器中遇到启动状态问题。Lex/Flex中的启动状态
我使用独家规则来处理评论,不过此语法似乎并不匹配引用标记:行
%x COMMENT
// { BEGIN(COMMENT); }
<COMMENT>[^\n] ;
<COMMENT>\n { BEGIN(INITIAL); }
"==" { return EQUALEQUAL; }
. ;
在这个简单的例子:
// a == b
ISN” t完全匹配作为评论,除非我包括这条规则:
<COMMENT>"==" ;
我该如何绕过这条路不得不将所有这些标记添加到我的专有规则中?在莱克斯/ Flex或者任何
我宁愿不必使用包容性状态,如果可以避免的话,因为我有很多规则。问题是这个'吃评论'规则似乎不符合具有多个字符(例如==)的令牌。 – Dan 2009-07-15 11:16:55
然后我想你可能会做错事。您需要为注释创建一个“子语法分析器”,这与您的正常标记不匹配。 – 2009-07-15 11:26:57