問題タブ [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.
parsing - haskellの解析機能
私はHaskellを初めて使用し、式を解析しようとしています。パーセクについて知り、いくつかの記事も見つけましたが、自分が何をしなければならないのか理解していないようです。私の問題は、「x ^ 2 + 2 * x + 3」のような式を与え、その結果を引数xを取り、値を返す関数にすることです。これが簡単な質問である場合は非常に申し訳ありませんが、私は本当にいくつかの助けが必要です。ありがとう!私が挿入したコードは、このリンクにある記事からのものです。
parsing - 最後にオプションのデータを含むテキストを解析する
この質問を投稿した後、自分で解決策を導き出すことができたことに注意してください。私の最終的な答えについては、この質問の最後を参照してください。
現在、組織モードのドキュメント用の小さなパーサーに取り組んでいます。これらのドキュメントでは、見出しにタイトルを付けることができ、オプションで見出しのタグのリストで構成することもできます。
ただし、このためのパーサーを作成するのは困難です。以下は、私が今のところ取り組んでいるものです。
私の単純なパーサーは機能しますが、見出し ( ) のタイトルを解析するためにすべての文字が使い果たされるためtags
、 のコンテキストでは機能しません。さらに、このパーサーはタイトルで有効であるため、使用するように変更できません。実際、タグリストの行の最後にある場合にのみ特別です。node
many1 anyChar
noneOf ":"
:
このオプションのデータを解析する方法はありますか?
余談ですが、これは私の最初の実際の Haskell プロジェクトなので、Parsec がその仕事に適したツールでさえない場合は、遠慮なく指摘して他のオプションを提案してください。
わかりました、完全な解決策が得られましたが、リファクタリングが必要です。以下の作品:
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 を選択する利点は何ですか?
ところで:私の質問はこれと非常に似ていますが、満足のいく回答が得られませんでした。
haskell - モナディックタイプの混乱
私はHaskellで自分自身にスキームを書くことを経験しています。それは素晴らしいチュートリアルですが、構文解析の演習の1つで壁にぶつかりました:
以下を使用してparseNumberを書き換えます。
- 表記する
- >>=演算子を使用した明示的なシーケンス
do-notationに問題はありませんでした:
#2については、次のようなバリエーションを試しました。
しかし、私はタイプエラーに遭遇し続けます。2つの質問があります。
- なぜタイプエラーが発生するのですか?モナディックバインド演算子を誤解していますか?
- do-notationソリューションで同様のタイプエラーが発生しないのはなぜですか?
タイプに関する基本的な概念が欠けているような気がしますか?
haskell - Haskellパーセク問題
私は初心者の Haskell であり、parsec lib の例を学習しています。
では、n または m は何ですか? n と m が int で 0 より大きいのはなぜですか?
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を作成しますが、ライブラリに依存したいと思います。
haskell - パーセクでは、語彙素が改行を消費するのを防ぐ方法はありますか?
のすべてのパーサーは、トークンの後に空白を食べるためにText.Parsec.Token
丁寧に使用します。lexeme
残念ながら、空白には新しい行が含まれています。これを式のターミネータとして使用したいと思います。lexeme
新しい行を残すように説得する方法はありますか?
xml - なぜパーセクの「選択」コンビネータが最初の選択に固執しているように見えるのですか?
Real World HaskellのCSVサンプルコードを見た後、私は小さなXMLパーサーを作成しようとしました。ただし、クローズタグは'予期しない"/"'エラーでエラーになります。「closeTag」パーサーが機能しない(または呼び出されない)理由を教えてください。ありがとう!
haskell - 複雑なパーセクパーサー
他に質問する方法がよくわかりません。ここで一般的なガイダンスが必要だと思います。私はこのようなものを持っています:
ただし、そのパーサーをテストすると、ほとんどの場合問題が発生します...解析しようとしたときのように
それはパーサーによって受け入れられますlambda
が、expr
パーサーはそれを嫌います。そして時にはそれは永遠のルールに完全にハングアップすることさえあります。
Write Yourself a Schemeを読みましたが、Schemeの同種のソースのみを解析します。
多分私は一般的に間違った方向に考えています。
編集:ここで内部パーサー:
そして、「それを嫌う」とは、整数または浮動小数点を期待していることを意味します。
haskell - doブロック内の入力'<-'の解析エラー?
私はParsecを使ってHaskellで構文解析をしようとしています。コードに多数のパーサーがありますが、そのうちの1つでエラーが発生しています。
エラーはparse error on input '<-
、a <- alternate
行にあります。
なぜこのエラーが発生するのか、そしてそれを修正する方法を誰かが説明できますか?
前もって感謝します。