問題タブ [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 投票する
1 に答える
2648 参照

c++ - c ++関数のparsecパーサー?

parsecを使用したc ++関数のオープンソースパーサー実装はありますか?

インストールが失敗するため、libClang を使用したくありません。

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

haskell - Text.ParserCombinators.Parsec と Text.Parsec の違いは何ですか

彼らは同じですか?

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

parsing - FParsecの再帰文法

私はFParsecをチェックすることにし、λ式のパーサーを書こうとしました。結局のところ、熱心さは再帰的な構文解析を困難にします。どうすればこれを解決できますか?

コード:

ありがとう!

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

haskell - パーセクでの入力の予期しない終了

次のようなファイルを解析したい:

私のコードは次のようなものです:

ただし、実行すると例外がスローされます。

私のdata.testファイルに10行しかないのに、なぜ11行目と言ったのかわかりません。そのため、何度か試行した後、この問題を修正できませんでした。

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

haskell - parsecはendBy関数のルールを定義できません

ある言語のパーセクルールを書くのに問題があります次の言語の定義があります(問題のある部分)

ここで、WSは空白を表し、LITERALは空白または空白を含むことができる引用符で囲まれた文字を除くすべての文字なので、次の関数を記述します。

問題はその記号';'です は有効なリテラルであるため、(1)関数はそれを解析します。したがって、(2)は';'を見つけられないため、解析エラーが発生します。キャラクター。

この問題を克服する方法はありますか:リテラル関数を作成して';'を受け入れないようにする 文字通りまたはどういうわけか修正(2)?


sclvのコメントの後、私は解決策を見つけました:

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

haskell - Parsec 関数 'parse' とクラス 'Stream' の型シグネチャ

(Stream s Identity t)次の型宣言の制約はどういう意味ですか?

Stream次のクラス宣言には何がありますか、それはどういう意味ですか。私は完全に迷っています。

Parsec を使用していると、型シグネチャ ( xxx :: yyy) でいつも渋滞に陥ります。私は常に署名をスキップし、src を ghci にロードしてから、型署名を .hs ファイルにコピーします。動作しますが、これらすべての署名が何であるかはまだわかりません。


編集:私の質問のポイントについての詳細。

タイプシグネチャの「コンテキスト」についてまだ混乱しています:

meansaは class のインスタンスでなければなりませんShow

この「コンテキスト」の意味は何ですかt?=>


実行するパーサーがたくさんあるので、ワープ関数を作成して、実際のファイルでそれらのパーサーを実行します。しかし、ここに問題があります:

これが私のコードです。ロードできません。どうすれば動作させることができますか?

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

arrays - 配列を使用した haskell でのスキーム ベクトルの解析

Write Yourself a Scheme in 48 Hours チュートリアルを試みていますが、haskell を初めて使用する人としてはかなり難しいです。私は現在、スキーム ベクトルを解析する機能を追加することになっている問題に取り組んでいます (セクション 3.4 演習 2)。

私はこのデータ型を使用しています:

解析するには、「#(」を探してから、ベクターの内容を解析し、それらをリストにドロップして、そのリストを配列に変換しようとしています。

私はすでに持っていて使用しているリスト解析関数を使用しようとしていますが、スキームリストを上記の LispVal リストに解析し、それを通常のリストに戻すのに苦労しています。または、少なくともそれが私の問題だと思います。

リストパーサーは次のとおりです。

これを修正する方法についてのアイデアはありますか? ありがとう、サイモン

-編集-これが私が得るコンパイルエラーです:

予想される型と一致しませんでしたa -> LispVal' against inferred typeParser LispVal' parseList の 2 番目の引数 (.)' namely' の 2 番目の引数(.)' namely lispValToList 内。parseList' 式内: listToArray 。lispValToList . parseList

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

haskell - Parsecのユーザー状態

Parsecを使用して式を解析していますが、Parsecのユーザー状態を使用してこれらの式の変数を追跡したいと思います。残念ながら、私はそれを行う方法を本当に理解していません。

次のコードが与えられます:

したがって、uinParsecT s u m aはになりますSet.Set。しかし、どのように状態更新をに統合しvarますか?

のようなものを試しましたが、州のモナドではないためmodify $ Set.insert v、これは機能しません。Set.Set

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

haskell - Haskell:FRPリアクティブパーセク?

ParsecHaskellにリアクティブ(または他の純粋な関数型パーサー)はありますか(または持つことは可能ですか)?

簡単に言えば、パーサーにcharごとにフィードして、出力を取得するのに十分な量の結果を取得したいと考えています。

または、もっと簡単に、どうすればそれを実行できますfoldrmap

そのような反応的な振る舞いをサポートするために、それらの異なるバージョンが必要ですか?

編集

私の質問は特にFRPについてです。例としてパーサーを使用しました。これは、質問を明確にし、必要なものの全体像を示すために考えられる最善の方法でした。

FRPはUIだけではないと思いますよね?

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

haskell - 些細なパーセクの例で型エラーが発生する

この些細なパーセクコードをコンパイルしようとしています

しかし、私はこのエラーが発生し続けます