問題タブ [ocamllex]

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 投票する
1 に答える
95 参照

parsing - 言語用に ocamlyacc を使用してパーサーを作成しようとしていますが、どの型を配置すればよいですか?

私は次のコードにも expr のようなものがあります: int {} | BOOL {} などですが、このパーサーの型に書くべき型が何であるかわかりません。int で動作する電卓の例があり、型は int ですが、私のプログラムには float char 文字列などがあります..ありがとう

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

ocaml - OCAML stdin から複数の引数を取得し、それらを 1 つずつ操作する

私は ocamllex と ocamlyacc を使用してインタープリターを作成しました。レクサーとパーサーは正しく動作しますが、現在のところ、それらすべてとは対照的に、受信した最後の .txt 引数のみを解析します。たとえば、解析とは対照的に、./interpret one.txt two.txt three.txt解析のみが必要です。たとえば、解析結果は次のようになります。three.txtone.txttwo.txtthree.txt

./interpret one.txt two.txt three.txt現在の出力を呼び出すと、次の3ようになります。123

stdinこれが、とを扱う私のメインクラスですstdout

御時間ありがとうございます

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

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

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

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

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

…そして…</p>

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

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

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

ありがとう!

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

parsing - トークンの内容に基づくパーサー レバーでの分岐

小さなプロジェクトの単純なパーサー/レクサーの例に取り組んでいますが、問題が発生しました。

私はこれらの行に沿ってコンテンツを解析しています:

…は、 、、または空白SEPのいずれか (複数ではない!) です。|,

ここで、フィールドの順序をレクサーの順序にロックしたくなかったので、非常に単純なトークンのセットを使用してこれを lex しようとしています。

ここで、たとえば、genderフィールドに決定ごとの値の小さなセットが含まれていない場合、解析エラーを生成するように指示されています{male,female,neither,unspecified}。パーサーをラップしてこれに対処することはできますが、将来の拡張のために、この要件をオートマトンにエンコードしたいと考えています。

私の最初の試みは、次のように見えて、恐ろしく失敗しました:

ええ、サイコロはありません。明らかに、構造化されていないレクシングに対する私の試みは、すでにうまくいっていません。

このようなものを解析する慣用的な方法は何ですか?