問題タブ [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 に答える
2858 参照

parsing - haskellの解析機能

私はHaskellを初めて使用し、式を解析しようとしています。パーセクについて知り、いくつかの記事も見つけましたが、自分が何をしなければならないのか理解していないようです。私の問題は、「x ^ 2 + 2 * x + 3」のような式を与え、その結果を引数xを取り、値を返す関数にすることです。これが簡単な質問である場合は非常に申し訳ありませんが、私は本当にいくつかの助けが必要です。ありがとう!私が挿入したコードは、このリンクにある記事からのものです。

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

parsing - 最後にオプションのデータを含むテキストを解析する

この質問を投稿した後、自分で解決策を導き出すことができたことに注意してください。私の最終的な答えについては、この質問の最後を参照してください。


現在、組織モードのドキュメント用の小さなパーサーに取り組んでいます。これらのドキュメントでは、見出しにタイトルを付けることができ、オプションで見出しのタグのリストで構成することもできます。

ただし、このためのパーサーを作成するのは困難です。以下は、私が今のところ取り組んでいるものです。

私の単純なパーサーは機能しますが、見出し ( ) のタイトルを解析するためにすべての文字が使い果たされるためtags、 のコンテキストでは機能しません。さらに、このパーサーはタイトルで有効であるため、使用するように変更できません。実際、タグリストの行の最後にある場合にのみ特別です。nodemany1 anyCharnoneOf ":":

このオプションのデータを解析する方法はありますか?

余談ですが、これは私の最初の実際の Haskell プロジェクトなので、Parsec がその仕事に適したツールでさえない場合は、遠慮なく指摘して他のオプションを提案してください。


わかりました、完全な解決策が得られましたが、リファクタリングが必要です。以下の作品:

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

haskell - Parsec vs Yacc/Bison/Antlr: なぜ、いつ Parsec を使うべきか?

Haskell と Parsec は初めてです。第 16 章 Using Parsec of Real World Haskell を読んだ後、疑問が頭に浮かびました: なぜ、いつ Parsec が Yacc/Bison/Antlr のような他のパーサー ジェネレーターよりも優れているのか?

私の理解では、Parsec はパーサーを書く優れた DSL を作成し、Haskell はそれを非常に簡単かつ表現力豊かにします。しかし、構文解析は、複数のターゲット言語に出力する独自の言語に値する標準/人気のあるテクノロジーです。では、Bison/Antlr から Haskell コードを生成する代わりに、いつ Parsec を使用するのでしょうか?

この質問は、テクノロジーを少し超えて、業界の慣行の領域にまで及ぶ可能性があります。パーサーをゼロから作成する場合、Bison/Antlr などと比較して、Haskell/Parsec を選択する利点は何ですか?

ところで:私の質問はこれと非常に似ていますが、満足のいく回答が得られませんでした。

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

haskell - モナディックタイプの混乱

私はHaskellで自分自身にスキームを書くことを経験しています。それは素晴らしいチュートリアルですが、構文解析の演習の1つで壁にぶつかりました:

以下を使用してparseNumberを書き換えます。

  1. 表記する
  2. >>=演算子を使用した明示的なシーケンス

do-notationに問題はありませんでした:

#2については、次のようなバリエーションを試しました。

しかし、私はタイプエラーに遭遇し続けます。2つの質問があります。

  1. なぜタイプエラーが発生するのですか?モナディックバインド演算子を誤解していますか?
  2. do-notationソリューションで同様のタイプエラーが発生しないのはなぜですか?

タイプに関する基本的な概念が欠けているような気がしますか?

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

haskell - Haskellパーセク問題

私は初心者の Haskell であり、parsec lib の例を学習しています。

では、n または m は何ですか? n と m が int で 0 より大きいのはなぜですか?

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

f# - FParsec:fparsecで日付を解析する方法(初心者)

区切られたファイルをfparsecで解析する方法について、 Bill Casarinの投稿を使用しています。コードがどのように機能するかを理解するために、ロジックを理解しています。複数行で区切られたドキュメントを(今のところ)セルリストリスト構造に解析しています。ここで、セルは文字列または浮動小数点数です。私はこれについては完全な初心者です。

フロートの解析に問題があります-一般的なケース(タブによって配信されるセル、数値を含む)では機能します。ただし、セルがたまたま数字で始まる文字列である場合、セルはバラバラになります。

pFloatCellを変更して、(タブを通過する途中で)floatとして解析するか、何も解析しないようにするにはどうすればよいですか?

ありがとうございました

おっと昨夜私のために遅れました。データを投稿するつもりでした。この最初のものは動作します

これはエラーを返しますが:

ChaosPの推奨事項がある場合とない場合の両方で返品されます。

ErrorMsg = "エラーのLn:1列:3 \ r \n102011年3月18:28:11GMT\ r \ n ^ \ r \ n期待:ファイルの終わり、改行、または'\ t'\ r \ n"

試みはうまく機能しているように見えます。2番目のケースでは、10までしか取得できず、 pfloatのコードは最初の空白のみを検索します。前にスペースがあるかどうかに関係なく、次のタブまたは改行までずっと調べる必要があることをpfloatに納得させる必要があります。Double.Parseを実行して独自のバージョンのpfloatを作成しますが、ライブラリに依存したいと思います。

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

haskell - パーセクでは、語彙素が改行を消費するのを防ぐ方法はありますか?

のすべてのパーサーは、トークンの後に空白を食べるためにText.Parsec.Token丁寧に使用します。lexeme残念ながら、空白には新しい行が含まれています。これを式のターミネータとして使用したいと思います。lexeme新しい行を残すように説得する方法はありますか?

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

xml - なぜパーセクの「選択」コンビネータが最初の選択に固執しているように見えるのですか?

Real World HaskellのCSVサンプルコードを見た後、私は小さなXMLパーサーを作成しようとしました。ただし、クローズタグは'予期しない"/"'エラーでエラーになります。「closeTag」パーサーが機能しない(または呼び出されない)理由を教えてください。ありがとう!

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

haskell - 複雑なパーセクパーサー

他に質問する方法がよくわかりません。ここで一般的なガイダンスが必要だと思います。私はこのようなものを持っています:

ただし、そのパーサーをテストすると、ほとんどの場合問題が発生します...解析しようとしたときのように

それはパーサーによって受け入れられますlambdaが、exprパーサーはそれを嫌います。そして時にはそれは永遠のルールに完全にハングアップすることさえあります。

Write Yourself a Schemeを読みましたが、Schemeの同種のソースのみを解析します。

多分私は一般的に間違った方向に考えています。

編集:ここで内部パーサー:

そして、「それを嫌う」とは、整数または浮動小数点を期待していることを意味します。

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

haskell - doブロック内の入力'<-'の解析エラー?

私はParsecを使ってHaskellで構文解析をしようとしています。コードに多数のパーサーがありますが、そのうちの1つでエラーが発生しています。

エラーはparse error on input '<-a <- alternate行にあります。

なぜこのエラーが発生するのか、そしてそれを修正する方法を誰かが説明できますか?

前もって感謝します。