0

私はgplexを求めていますが、そうであるかもしれませんが、問題の解決策は他のlexから派生したツールでも機能します。

私はすべてのルールを書きましたが、1つの例外を除いてすべてが問題ありません。scan生成されたスキャナーのメソッドのタイプはintであり、私はなりたいですMySymbol(これは、トークンのID(INT、STR、PLUSなど)、その値、およびファイル内の可能な場所で構成されます)。

サンプルをチェックしましたが(多くはありません)、非常に単純で、ルールが一致したという事実を書き出すだけです。マニュアルを読みましたが、パーサーの観点から始まり、今のところ少し迷っています。

lexファイル内の私のルールの1つ:

while { return new MySymbol(MyTokens.WHILE); }

私が今持っているのはスキャンフェーズだけです。それを終了する必要があります。それからパーサーについて考えます。

4

1 に答える 1

0

YaccおよびYaccのようなツール(ここではGPLex)は、副作用に依存しています。通常はデータを返すことを考えることができますが、ここではトークンIDを返しているので、余分なデータは.などの特別な変数を介して「渡す」必要がありますyyval

于 2012-12-13T14:00:33.437 に答える