我正在使用python lex / yacc(PLY)来分析文本文件。
基本上,我需要关注整篇文章中的部分文字。
例如,我只关心整个文本中a = a + NUM的模式(表达式)。
[JUNKS] a = a + 1; [JUNKS] a = a + 2; [JUNKS]
真正的整篇文章可能是这样的:
a;ldfjkadl;skfjas;lkfja; a = a+1; a;dfja;lkfja;ldfjadlf a = a + 12; a;kdfj;af
我对我感兴趣的表达的规则是:
my_expr : ID EQ ID PLUS NUM
如何编写正确的lex / yacc规则来过滤掉这些垃圾字符串?除了“my_expr”规则之外,请不要使用各种字符制作任何字符串。我做了很多尝试,但还没有找到办法。
提前感谢您的帮助!
答案 0 :(得分:0)
我建议在词法分析器中过滤它们,但是JUNKS有点复杂。看看这样的语法是否适合你: -
stmt: ID stmt
| ';' stmt
| expr
;
expr: ID '=' ID '+' NUM
;
答案 1 :(得分:0)
我想出了这样做的方法。
只需使用“状态”即可跳过垃圾箱。