問題タブ [menhir]

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.

0 投票する
2 に答える
112 参照

compiler-construction - メンヒルのセマンティック アクション

割り当て言語用の小さなコンパイラを構築しています。

次のルールを検討してください。

セマンティック アクションは、var_block が最初に認識されたときにトリガーされますか?それとも、生成の最後 (この場合は RPAREN) に達したときにトリガーされますか?

0 投票する
1 に答える
834 参照

parsing - menhirを使用して式のリストを解析するには?

以下は、Andrew Appel の Tiger 言語 (ocaml) 用の現在のレクサーパーサーです。

現在、相互再帰関数をサポートしようとしていますが、次のパーサー コードが機能しません。

小さな例:

2 つの要素で構成されるリストをFunDec持つ単一のトークンではなく、シングルトン リストを持つ2 つのトークンを取得します。FunDec

menhir を使用して のリストを解析するにはどうすればよいfundecですか?

PS: 2 番目のパスでこれらのリストをマージできることはわかっていますが、可能であればパーサーにマージしてもらいたいです。

0 投票する
2 に答える
273 参照

ocaml - モジュラーパーサー仕様で「決して役に立たない」優先順位警告を抑制しますか?

menhir で未使用の優先順位警告を抑制することは可能ですか?

バックグラウンド:

いくつかLib.mlyのルールを備えたコア パーサーとA.mly、. すべての言語で単一のレクサーの使用をサポートするために、すべてのトークンが で定義されており、アノテーションを使用し、未使用のトークンの警告を抑制するように拡張しました。これは非常に役立ちます。ただし、次の形式の多くの警告が表示されます。B.mlyLib.mlyLib.mlyexternal_tokens(Lib)_tagsmyocamlbuild.ml--unused-tokens

これらは、私が実際に対処したい他の警告を見つけるのを難しくします. 演算子のさまざまなサブセットがさまざまな言語で使用されているため、それらを適切に並べ替える単一の「グローバル」な優先順位が必要です。ヒントをありがとう!

0 投票する
1 に答える
475 参照

parsing - OCaml レクサーで「先読み」を実行するにはどうすればよいですか / 語彙素をロールバックするにはどうすればよいですか?

さて、私は最初のパーサーを OCaml で書いていますが、すぐにどうにかして無限ループを持つパーサーを作成することができました。

特に注目すべきは、Scheme 仕様の規則に従って識別子を lex しようとしていることです (明らかに、自分が何をしているのかわかりません)。また、識別子の後に区切り文字が続くことを要求する言語がいくつかあります。現在の私のアプローチは、メインのレクサーによって消費されるべきではない文字delimited_identifierの1つを含む正規表現を持つことです...そして、それが一致すると、その語彙素の読み取りは(まあ、私のラッパー)によって元に戻されます、実際の識別子のみを食べるサブレクサーに渡される前に、うまくいけばデリミタをバッファーに残して、親レクサーによって別の語彙素として食べられるようにします。delimiterSedlexing.rollback

私はMenhirSedlexを使用しており、主に@smolkajocaml-parsingexample-repo とRWO の解析の章の例を合成しています。これが私の現在のパーサーレクサーの最も簡単な削減です:

…そして…</p>

(はい、基本的にノーオペレーション/可能な限り簡単なことです。私は学ぼうとしています! :x)

残念ながら、この組み合わせにより、解析オートマトンで無限ループが発生します。

私は解析と字句解析、およびこれらすべてに不慣れです。どんなアドバイスも大歓迎です。きっと初心者のミスだと思いますが…</p>

ありがとう!