問題タブ [parsec]

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

python - パーセクのPython実装?

最近、Ply を使用して Python でパーサーを作成しました (これは yacc を Python で再実装したものです)。パーサーをほぼ使い終えたとき、構文解析する必要がある文法では、構文解析中にルックアップを行ってレクサーに通知する必要があることに気付きました。レクサーに通知するためにルックアップを行わないと、言語の文字列を正しく解析できません。

文法規則からレクサーの状態を制御できることを考えると、パーサーモジュールのルックアップテーブルを使用してユースケースを解決すると思いますが、保守/テストが難しくなりすぎる可能性があります。そこで、他のオプションについて知りたいと思います。

Haskell では、構文解析関数 (コンビネーターとして知られる) のライブラリーである Parsec を使用します。Parsec の Python 実装はありますか? それとも、Python でコンテキスト依存のパーサーを構築できるように、構文解析機能を備えた他の製品品質のライブラリでしょうか?

編集:コンテキストフリーの解析での私の試みはすべて失敗しました。このため、ANTLR がここで役立つとは思いません。

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

parsing - 良いocamlパーサー?

flex/bisonの派生物ではない優れたocaml解析ライブラリを探しています。理想的には、パーセクの線に沿ったモナディックコンビネータライブラリが欲しいのですが、何も見つかりません。

私はhaskellを使用しますが、haskellのllvmバインディングを作成することは、私が当初考えていたよりも面倒です。

乾杯、

デュアン

0 投票する
3 に答える
808 参照

windows - HaskellParsecコンパイルエラー

ビルド済みのインストーラーv6.8.2を介してHaskellをインストールしました。

このサンプルファイルをGHCでコンパイルしようとすると

次のエラーが発生します。

カバール経由でParsecをインストールしました。

何が悪いのかについて誰かが何か考えを持っていますか?

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

parsing - Haskell/Parsec で ParseError を上げる

ParseErrorParsec でエラー ( )を発生させる好ましい方法は何ですか? チェックを実行するパーサー内にいくつかのコードがあり、チェックが失敗した場合ParseErrorは が返されます (つまりLeft ParseError、実行中parse)。

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

haskell - haskell で oneOf を使用すると、コンパイル時にエラーが発生する

私は Haskell の完全な初心者です。ダウンロードした Haskell ファイルをコンパイルしようとしていますが、エラーが発生します。

これで十分かどうかはわかりませんが、エラーのあるコードのセクションは次のとおりです。

0 投票する
3 に答える
2739 参照

haskell - Haskell の Parsec を使用して ByteString を解析する

Parsec を使用して文字列を解析することはできましたが、ByteString で同じことを行うことはできません。

Parsec を手動で文字列に変換せずに ByteStrings で動作させるにはどうすればよいですか?

これを達成するのは難しくないと感じています。私が間違っている?(Haskell初心者です^^)

ありがとう!

0 投票する
4 に答える
1258 参照

haskell - Parsecを使用して、foo2で終了し、すべてドットで区切られた0個以上のfoo1を解析するにはどうすればよいですか?

私がやろうとしていることはかなり単純に思えますが、私はパーセクのHaskell初心者なので、解決策は私にはわかりません。

私には2つのパーサーがあります。たとえば、中間項を解析し、終了項を解析できる場所foo1を考えてみましょう。用語は記号で区切られます。foo2foo1foo2"."

解析する必要のある文は

  • foo2
  • foo1.foo2
  • foo1.foo1.foo2

等々。

私の当初の考えは

しかし、それは唯一のケースを捕らえることはできませんfoo2

0 投票する
3 に答える
1001 参照

haskell - Parsec: バックトラッキングが機能しない

F# 型の構文を解析しようとしています。[F]Parsec 文法を書き始めて問題が発生したので、文法を次のように単純化しました。

FParsec で問題が発生した後、私は Parsec に切り替えました。なぜなら、私はそれを説明するための本の完全な章を持っているからです。この文法の私のコードは

問題は、Parsec がデフォルトでバックトラックしないことです。

私が最初に試みたのは、typeP の順序を変更することでした。

しかし、文法が左再帰であるため、これは単なるスタック オーバーフローidentPですarrowP。次に、さまざまな場所で試しtryました。たとえば、

しかし、(1)スタックオーバーフローまたは(2)識別子に続く「->」の非認識の基本的な動作を変更することは何もないようです。

私の間違いは、Parsec 文法の記述に成功した人なら誰にでも明らかです。誰かがそれを指摘できますか?

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

parsing - Scala パーサー コンビネーターは Haskell の Parsec と比べてどうですか?

Haskell パーサー コンビネータ (Parsec 内) が文脈依存文法を解析できることを読みました。これは Scala パーサー コンビネーターにも当てはまりますか? もしそうなら、これは "into" (別名 ">>") 関数の目的ですか?

Scala のパーサー コンビネータの実装と Haskell の実装の長所/短所は何ですか? それらは同じクラスの文法を受け入れますか? エラーメッセージを生成したり、他のさまざまな便利なことをしたりするのは簡単ですか?

packrat の構文解析 (Scala 2.8 で導入) は、この状況にどのように当てはまりますか?

ある言語の実装からの異なる演算子/関数/DSL-sugarが他の言語の実装にどのようにマッピングされるかを示すWebページまたはその他のリソースはありますか?

0 投票する
4 に答える
1472 参照

haskell - アイテムの文字列を解析するHaskellparsec

最後の要素を除くすべてを1つのパーサーで解析する必要があり、最後の要素を別のパーサーで解析する必要があるリストを解析する必要があります。

もともと試しました

問題は、parse1がparse2入力を消費する可能性があることです。したがって、parse1は常にリスト全体を消費し、parse2には何も残しません。

文字列の最後の要素以外のすべてにparse1を適用してから、parse2を適用すると言う方法はありますか?