0

我正在使用 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”规则之外的各种字符组成的任何字符串。我做了很多尝试,但还没有找到方法。

在此先感谢您的帮助!

4

2 回答 2

0

我会建议在词法分析器中过滤掉它们,但 JUNKS 有点复杂。看看这样的语法是否适合你:-

stmt: ID stmt 
    | ';' stmt
    | expr
    ;

expr: ID '=' ID '+' NUM
    ;
于 2012-12-12T10:38:17.687 回答
0

我想出了办法做到这一点。

只需使用“状态”来跳过垃圾。

于 2012-12-29T21:52:20.680 回答