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

レクサーでそれらをフィルターで除外することをお勧めしますが、ジャンクは少し複雑です。このような文法があなたのために働くかどうか見てください:-

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

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

私はこれを行う方法を考え出しました。

ジャンクをスキップするには、「状態」を使用するだけです。

于 2012-12-29T21:52:20.680 に答える