問題タブ [sprache]

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 に答える
1906 参照

c# - カスタム フィールドを使用した Sprache パーサー

レポートの内容を制御するいくつかの引数を使用して文字列を解析する必要があるレポート サーバーがあります。

これを支援するために、パーサー ライブラリ sprache を使用しています。私が立ち往生していることを除いて、すべてが正常に機能しています。

今日、昨日、先週、先月、なし、またはカスタムの値のいずれかになる時間フィルターがあります。

私にいくらかの悲しみを与えているのは習慣です。他のすべては単純な文字列です。Custom には、後で from プロパティと to プロパティもあります。

カスタムラインが問題です。「カスタム」文字列を解析する必要がありますが、次に from および to DateTime フィールドも解析し、それらを DataFilterEntity.Custom(from, to) に渡します。

どんなアイデアでも大歓迎です。

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

c# - Sprache:数字の一致から文字を除外するにはどうすればよいですか?

モナディックパーサーSpracheを使用して、数字以外の文字を除いて数字(0..9)と一致するように探しますが、先頭または末尾の空白は問題ありません。

私はこれがうまくいくはずだと思った:

またはこれ:

どちらも、末尾のテキストを除いて、私が考えることができるすべてのケースで機能します。

手がかりはありますか?

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

c# - Sprache: 文法における左再帰

expression IS NULLSQL に似た言語のパーサーを開発していますが、次のような言語のルールをいくつか作成するという問題がありますexpression IN (expression1, expression2, ...)

GitHub テスト プロジェクトhttps://github.com/anpv/SpracheTest/をアップロードしましたが、このバリアントは良くありません。
次のルールを使用しようとしました。

またはParseExceptionのようなコードをスローします。ScriptParser.ParseExpression("1 is null")ScriptParser.ParseExpression("1 in (1, 2, 3)"): "Parsing failure: Left recursion in the grammar."

Expression を先読みするにはどうすればよいですか、またはこの問題を解決するための他のバリアントは存在しますか?

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

c# - Sprache: 符号付き整数をパースする

Spracheパーサー フレームワークを使用して符号付き整数を解析するより良い方法があるかどうか疑問に思います。

符号のない整数のよく知られたパーサー定義があります Parse.Number.Select(int.Parse)

-しかし、プレフィックス付きの整数も解析したいと思います。

私が今持っているのは ですParse.Regex(@"\-?\d+").Select(int.Parse)

正規表現を使わずにそれを行うより良い方法はありますか?

たとえば、Parse.Char('-').Optional()次の番号を使用して解析します。

ありがとう

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

c# - 文字列内の連続した引用符を無視するための正規表現

制御できない形式を使用するファイル用に、Sprache と C# でパーサーを作成しました。それを使用すると、正しく変換できます:

の中へ

パーサー (引用されたテキストのみ) は現在、次のようになっています。

ただし、私が使用している形式は、「二重二重」引用符を使用して引用符をエスケープします。

これを解析しようとすると、何も返されません。次のように返されます。

さらに

string.Emptyまたは同様のものに解析する必要があります。

、または次のようなことを行うこのような回答に基づいて、正規表現を試してみましたが失敗しました:"(?:[^;])*"

これは機能しません (つまり、上記のケースでは一致が返されません)。私の初心者の正規表現スキルが邪魔になっていると思います。誰にもヒントはありますか?

編集:ここでテストしていました- http://regex101.com/r/eJ9aH1

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

c# - Sprache で (XAML) プル パーサーを構築する方法は?

OmniXamlプロジェクトの一部としてプル パーサーを作成しました。XML ファイルを読み取り、それを列挙可能な XAML ノードに変換します。しかし、私はこの結果に満足していないので、よりエレガントな方法で別のものを作成することにしました。

これが、 Spracheを使用してパーサーを作成しようとした理由です。

問題は、どうやって始めたらいいのかわからないということです。XAML の解析はコンテキストに大きく依存するため、1 つの Xaml ノードを生成する場合は、次のノードを先読みして処理する必要がある場合があります。現在、XmlReader を使用して XAML を読み取ります。

ここでは、私が何をしたいのかを理解するために、入力/出力の例をいくつかリストしています。入力は XAML コードで、出力は XAML ノードのリストです。XAML ノードは、XAML で表されるオブジェクトを再作成するために必要なデータを保持する構造です。それらはCPUの命令のようなものです。

例 1

入力 (XAML):

出力 (XAML ノードのリスト)

  • 接頭辞「」を持つ「root」のネームスペース宣言
  • DummyClass 型のオブジェクトの開始
  • タイプ「DummyClass」からのメンバー「SampleProperty」の開始
  • 値ノード:「プロパティ!」
  • メンバーの終わり
  • なし
  • オブジェクトの終わり

例 2

入力:

出力:

  • 接頭辞「」を持つ「root」のネームスペース宣言
  • DummyClass 型のオブジェクトの開始
  • なし
  • タイプ「DummyClass」からのメンバー「Child」の開始
  • タイプ「ChildClass」のオブジェクトの開始
  • なし
  • オブジェクトの終わり
  • メンバーの終了
  • オブジェクトの終わり

例 3

入力:

出力:

  • 接頭辞「」を持つ「root」のネームスペース宣言
  • DummyClass 型のオブジェクトの開始
  • なし
  • タイプ「DummyClass」から のメンバー「アイテム」の開始</li>
  • [Get Object] ディレクティブ
  • [項目の開始] ディレクティブ
  • タイプ「アイテム」 のオブジェクトの開始</li>
  • なし
  • オブジェクトの終わり
  • タイプ「アイテム」 のオブジェクトの開始</li>
  • なし
  • オブジェクトの終わり
  • タイプ「アイテム」 のオブジェクトの開始</li>
  • なし
  • オブジェクトの終わり
  • メンバーの終了
  • オブジェクトの終わり
  • メンバーの終了
  • オブジェクトの終わり

質問: これをどのように開始しますか?

いくつかのサンプル/ガイドラインを提供していただけますか? ありがとう!

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

c# - 「Sprache」のモナドパーサー「Or」および「Many」セマンティクス

Sprache モナディック パーサーを使用して DSL を解析しています。

これは私の文法のスニペットです:

それを使用するとStatements.Parse(" ")、予期しない入力の終わりがあったという例外が発生します。

AFAIKが0-nの結果をもたらす演算子をStatements使用する場合、どうすればよいでしょうか。Many

" "Statements0 ステートメントを含むインスタンスを返す必要があります。

では、パーサーは、予期しない入力の終わりがあることをどのように訴えることができるのでしょうか? そこには声明がないと結論付けるべきではありませんか?(ステートメントを構成するさまざまな表現がどんなファンキーなものであっても)

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

c# - Sprache DelimitBy new line

I have these parsers as part of my grammar:

I want to have a separator parser that is either "at least one LineEnd" or a comma.

so that I can parse things like:

or

I have tried a lot of different options to define the NewLineSeparator but I'm obviously doing something wrong. delimiting by comma works fine, the newlineseparator parser seems to not get any matches.

Complete source is available here in case someone want to take a peek: https://github.com/rogeralsing/SpracheHocon/blob/master/SpracheHocon/Program.cs

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

c# - Sprache - パーサーの組み合わせ

Sprache を使用して、さまざまな入力部分と一致するパーサー A、B、C、D があり、さまざまなクラス インスタンスを選択 (返し) します。私の入力には、ランダムな順序で多くの部分があります。「アバアコババババ」。すべての「a」と「b」などを選択する必要があります - 順序は関係ありません:

このようには機能しません。Sprache でこの状況を (最善の方法で) どのように説明できますか?

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

c# - Sprache を使用して識別子から列挙型を解析しますか?

Sprache を使用して、数式のドメイン固有言語を解析し始めています。次のようなものを使用して識別子を解析できることはわかっています。

これから、識別子トークンが Enum のテキスト値の 1 つである場合にのみ成功するパーサーを構築したいと考えています。たとえば、Dimension.Location と Dimension.Time の値を持つ Dimension という Enum があるとします。作りたい

解析対象が識別子であり、識別子のトークン文字列が列挙名 ("Location" または "Time") の 1 つである場合にのみ成功し、列挙値 Dimension.Location または Dimension.Time をそれぞれ返します。 . 誰かがおそらく簡単な質問を手伝ってくれますか? ありがとう!