0
在我的莱克斯文件中,我们认识到一些运营商作为标记一些这个操作是
":p"
and
":"
的问题是,任何文字女巫始于:像":presentation"
p是不承认
':' word /*grammar*/
和解析错误被触发由于返回值法作为":p"
下一个令牌
我该如何解决这个歧义?
在我的莱克斯文件中,我们认识到一些运营商作为标记一些这个操作是
":p"
and
":"
的问题是,任何文字女巫始于:像":presentation"
p是不承认
':' word /*grammar*/
和解析错误被触发由于返回值法作为":p"
下一个令牌
我该如何解决这个歧义?
而应该定义一个词法规则相匹配的完整的“符号”的道理,即像
:[a-zA-Z_][a-zA-Z0-9_]* { yylval.symbol = strdup(yytext + 1); return SYMBOL; }
如果需要,你可以在这个规则的支票:p
和特殊情况下,如:
:[a-zA-Z_][a-zA-Z0-9_]* {
if (strcmp(yytext, ":p") == 0) {
return OP_P;
}
yylval.symbol = strdup(yytext + 1);
return SYMBOL;
}
是,其实我已经做到了这一点,我回到我在我的问题(在你的例子SYMBOL)写的托克WORD的问题是,我有TOW规则LEX和“:p”可以由他们验证 – Aymanadou
我的建议是,你删除了较短的规则,并添加一个检查*中的*较长的一个。我会修改我的答案,一秒钟。 – Ashe
@Aymanadou:现在看看。 – Ashe