这是上下文:我有一个文件(或流),我想处理它的标题,停止,然后以不同的方式处理其余的数据。也就是说,假设我有一个像BEGIN GOOD GOOD GOOD GOOD GOOD DONE JUNK JUNK JUNK JUNK ...
这样的流。第一部分(BEGIN GOOD+ DONE
)符合我的语法,我想在看到DONE
后立即停止。
AFAIK,YACC和朋友们希望继续使用令牌,直到没有更多,因此我必须编写更多语法来匹配所有JUNK
。有没有解决的办法?
我正在使用PLY(Python的Lex和Yacc实现),但我在这里可以得到一般答案。
答案 0 :(得分:1)
在正常的yacc中,您可以在操作中使用yacc宏YYACCEPT
来立即返回成功的解析,而无需再读取任何令牌。然而,我不知道PLY是否支持这一点。