問題タブ [fparsec]

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

.net - 「値は関数ではないため、適用できません。」F#のエラー

なんらかの理由で機能しなくなるまで、次のFParsecコードを実行しようとしていました。

ここに画像の説明を入力してください

私が得ているエラーは

ただし、コードの最後の行()をコメントアウトしてtest ns ".."も、エラーは発生しません。これを解決する方法について何か考えはありますか?


テキスト形式のソースコードは次のとおりです。

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

f# - FParsec を使用したメソッド引数の解析

FParsec でメソッド引数パーサーを実装しようとしています。

FParsec 自体に、この目的に役立つ機能が既に実装されているかどうか疑問に思っていましたか? FParsec は演算子の優先順位を扱うときにツールを提供するため、これにも何かがあるかもしれません。


左中括弧と右中括弧の解析は非常に簡単です。頭痛の種は、発生する可能性のある次の 3 つのケースに対処することです。

メソッドの引数は次のもので構成できます。

  • 引数なし、
  • 一つの引数、
  • いくつかの引数 (すべてカンマ区切り)。最後の引数の前にカンマを付けることはできないことに注意してください!

組み込み機能がない場合、つまり <|> 演算子とストリームコピーを使用して、これを自分で実装する方法については、すでにいくつかの手がかりがありますが、そのような低レベルのものから離れたいと思います可能。

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

.net - FParsecのデフォルトのエラーメッセージ

次のパーサーを定義しているとしましょう。

解析すると、予想どおりエラーが発生します。

なぜ彼が手紙を期待しているのに手紙が見つからないのかが問題だと判断できないのか興味があります。その情報を自分でパーサーに追加する予定はありますか?

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

parsing - FParsec パーサーの可読性の向上

私は手書きの CSS パーサーを C# で作成しましたが、これは管理が難しくなり、より管理しやすくするために FParsec で実行しようとしていました。正規表現で作成された css セレクター要素を解析するスニペットを次に示します。

私の最初の試みはこれをもたらしました:

しかし、私はそれがどのように形成されているかはあまり好きではありません。もっとわかりやすいものを期待していたのですが、(tag?id|tag?classes|tag)pseudoClass? いくつかのパイプ 2 と試行は本当に悪いです。

FParsec の経験が豊富な人が、これを達成するためのより良い方法を教えてくれましたか? FParsec の代わりに FSLex/Yacc または Boost.Spirit を試してみることを考えています。

0 投票する
0 に答える
583 参照

.net - CIMPLICITYのctxファイルを解析する方法

CIMPLICITYのctxファイルを解析する必要があります。Ctxファイルのサンプル:

上記のファイルは、CIMPLICITYの画面を表しています。問題は、そのファイルに基づいてWPF画面を構築することです。まず、私の意見では、そのファイルを解析し、不要な部分を削除してから、インターフェイスを構築する必要があります。

私はインターネットでグーグルで検索しました。ネットベースのパーサー-FParsec。問題は、私がF#でコーディングしたことがなく、このライブラリの使用方法を理解するのが難しいことです。だから私は余分な仕事をしたくありません。

主な質問:FParsecを使用して、画面の構造を表すカスタムオブジェクトにそのファイルを解析することは可能ですか。たとえば、このオブジェクトには次のような定義があります。

それは間違った方法かもしれませんか?何が正しいのですか?

アップデート:

また、私はガラ場言語用のBNFを持っています。サンプル:

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

f# - FParsec for .NET Compact Frameworkを構築する方法は?

私はFParsecに基づいた小さなアプリケーションを書いています。

今日、私はCompactFrameworkのバージョンを作成する機会を探しています。どうやら、.NETCF用のFParsecソースを構築するのはそれほど簡単ではありません。FParsecCSライブラリには、安全でないコードと、CFで使用できないタイプへの参照がいくつかあります。つまり、、、System.Collections.Generic.HashSetなどSystem.Text.DecoderFallbackException

それを構築する方法があるかどうか疑問に思います。明らかに、FParsecのさらなるバージョンがリリースされたときに更新するのは難しいので、私はコードを変更しないようにしています。

パフォーマンスはあまり気にしません。あなたが持っている高性能のものの代わりに使用できるジェネリックがあればCharStream、それで十分でしょう。

ご協力ありがとうございました。

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

f# - ワークフローまたはfsYaccを使用する必要がありますか?

.Netプラットフォームで解析する必要のある非常に単純なDSLがあります。パーサーの経験があまりないので、F#(fsLex、fsYacc、FParsec)を使用した例を見てきました。私はF#にあまり詳しくありませんが、ワークフローとLINQの経験はあります。

DSLの単純さを考えると、LINQを使用してレクサーを実装する必要はありません。ワークフロー(私はV4を使用します)は文法を実装するのに魅力的です。私はそれをよく知っているので、そのグラフィックの性質を考えると他の人に説明しやすく、Microsoftによってサポートされており、おそらく進化し続けます。

ただし、DSLがより洗練されたものになると、WF実装がネストされたアクティビティの地獄になり、LINQベースのレクサーが同じように機能することを想像できます。その時点で、F#を学習し、F#ツールの1つを使用する方が理にかなっています。

他の人がWFとF#の解析ツールを比較して単純なDSLインタープリターを実装したかどうか、そして結論はどうなるのか疑問に思います。

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

parsing - バイナリ(テキストではない)ファイルを解析できる既知のパーサーコンビネーターライブラリがF#にありますか?

私はfparsecの基本のいくつかに精通していますが、テキストファイルまたはストリームを対象としているようです。

バイナリファイルを効率的に解析できる他のF#ライブラリはありますか?または、fparsecを簡単に変更して、バイナリストリームで効率的に動作するようにすることはできますか?

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

f# - FParsecパーサーを変換して空白を解析する方法

FParsecを使用してコメントを空白として扱うパーサーを実装しています。簡単なパーサー変換が必要なようですが、それを実装する方法はまだわかりません。

これが私がタイプチェックしようとしているコードです-

エラーは、両方の<|>演算子の2番目の引数(over whitespaceText)にあります。エラーは-

をに変換する必要があるようParser<char list, 'a>ですParser<string, 'a>。または、スキップしているだけなので、両方をに変換できますParser<unit, 'a>。しかし、そのコードの書き方がわかりません。単純なラムダ式ですか?

乾杯!

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

f# - FParsecでコメントを解析する方法

FParsecを使用してs式言語からのlispスタイルのコメントを解析しようとしています。この前のスレッドで1行のコメントを解析するのに少し助けがありました-FParsecパーサーを変換して空白を解析する方法

それは解決されましたが、複数行のコメントを解析する必要があります。これが現在のコードです-

残念ながら、multilineComment解析は成功しません。これはコンビネータであるため、ブレークポイントを設定したり、機能しない理由を分析したりすることはできません。

それが機能しない理由はありますか?