問題タブ [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.
parsing - 言語用に ocamlyacc を使用してパーサーを作成しようとしていますが、どの型を配置すればよいですか?
私は次のコードにも expr のようなものがあります: int {} | BOOL {} などですが、このパーサーの型に書くべき型が何であるかわかりません。int で動作する電卓の例があり、型は int ですが、私のプログラムには float char 文字列などがあります..ありがとう
ocaml - OCAML stdin から複数の引数を取得し、それらを 1 つずつ操作する
私は ocamllex と ocamlyacc を使用してインタープリターを作成しました。レクサーとパーサーは正しく動作しますが、現在のところ、それらすべてとは対照的に、受信した最後の .txt 引数のみを解析します。たとえば、解析とは対照的に、./interpret one.txt two.txt three.txt
解析のみが必要です。たとえば、解析結果は次のようになります。three.txt
one.txt
two.txt
three.txt
./interpret one.txt two.txt three.txt
現在の出力を呼び出すと、次の3
ようになります。123
stdin
これが、とを扱う私のメインクラスですstdout
御時間ありがとうございます
parsing - OCaml レクサーで「先読み」を実行するにはどうすればよいですか / 語彙素をロールバックするにはどうすればよいですか?
さて、私は最初のパーサーを OCaml で書いていますが、すぐにどうにかして無限ループを持つパーサーを作成することができました。
特に注目すべきは、Scheme 仕様の規則に従って識別子を lex しようとしていることです (明らかに、自分が何をしているのかわかりません)。また、識別子の後に区切り文字が続くことを要求する言語がいくつかあります。現在の私のアプローチは、メインのレクサーによって消費されるべきではない文字delimited_identifier
の1つを含む正規表現を持つことです...そして、それが一致すると、その語彙素の読み取りは(まあ、私のラッパー)によって元に戻されます、実際の識別子のみを食べるサブレクサーに渡される前に、うまくいけばデリミタをバッファーに残して、親レクサーによって別の語彙素として食べられるようにします。delimiter
Sedlexing.rollback
私はMenhirとSedlexを使用しており、主に@smolkajのocaml-parsing
example-repo とRWO の解析の章の例を合成しています。これが私の現在のパーサーとレクサーの最も簡単な削減です:
…そして…</p>
(はい、基本的にノーオペレーション/可能な限り簡単なことです。私は学ぼうとしています! :x
)
残念ながら、この組み合わせにより、解析オートマトンで無限ループが発生します。
私は解析と字句解析、およびこれらすべてに不慣れです。どんなアドバイスも大歓迎です。きっと初心者のミスだと思いますが…</p>
ありがとう!
parsing - トークンの内容に基づくパーサー レバーでの分岐
小さなプロジェクトの単純なパーサー/レクサーの例に取り組んでいますが、問題が発生しました。
私はこれらの行に沿ってコンテンツを解析しています:
…は、 、、または空白SEP
のいずれか (複数ではない!) です。|
,
ここで、フィールドの順序をレクサーの順序にロックしたくなかったので、非常に単純なトークンのセットを使用してこれを lex しようとしています。
ここで、たとえば、gender
フィールドに決定ごとの値の小さなセットが含まれていない場合、解析エラーを生成するように指示されています{male,female,neither,unspecified}
。パーサーをラップしてこれに対処することはできますが、将来の拡張のために、この要件をオートマトンにエンコードしたいと考えています。
私の最初の試みは、次のように見えて、恐ろしく失敗しました:
ええ、サイコロはありません。明らかに、構造化されていないレクシングに対する私の試みは、すでにうまくいっていません。
このようなものを解析する慣用的な方法は何ですか?