問題タブ [cup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cup - オプションのトークンを CUP で表現する方法
小さなプログラミング言語用の LARL(1) パーサーを生成するために Java CUP を使用しています。ルールでオプションの非終端記号を表現するコンパクトな形式はありますか? たとえば、次のルールでは
次のようなものを置くのが自然な場合、本質的に同じことを4回繰り返します
java - CUP 文法のデバッグ
CUP 文法のデバッグで行き詰まりました。
したがって、CUPには次の文法があります。
レクサーは、次のトークンを CUP アナライザーに供給しています。
(どこ;
にあるのか、ブロックSEPARATOR
を区切る。{ }
実行すると、次の出力が得られます。
(単一の単語を含む行は、結果としてトークンが出力されたレクサーへの呼び出しを表します。CUP ルールを含む行は、そのルールが一致していることを表します。7 行目は、while ステートメントを含む行です。)
ブロックが失敗の原因のようです。文法に与えられたものからすべてのブロックを削除すると、すべてが期待どおりに解析されます。
ただし、ブロックが正しく解析されない理由がわかりません。
何が問題なのか、またはさらにテストする方法についてのアイデアはありますか?
編集:回答を省略した可能性のある詳細が必要な場合は、このレポで完全なコードを入手できます