問題タブ [parboiled]
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.
java - ペグダウン カスタム ParserPlugin バインディングに失敗しました
私が書いているライブラリ(Mavenプロジェクト、JDK 8)にカスタムParserPluginを実装しようとしているときに、pegdown v1.4.2の問題に直面して立ち往生しています:
カスタムプラグイン:
ペグダウンの使用法:
テスト:
テストの例外:
- 不気味なリフレクションを回避して CustomHeadersParserPlugin をバインドできますか?
- そうでない場合は、pom.xml で maven-bundle-plugin をセットアップして pegdown v 1.4.2 で動作させる方法を教えてください。
ここで議論のある問題を見つけましたが、初心者すぎて Maven プラグインとリフレクションを一人で扱うことはできません。
scala - Parboiled を使用して、同じセパレーターで異なる入力タイプを解析する
Parboiled を使用して、同様のソースを異なる型に変換する必要がある文字列を解析したいと考えています。
具体的には、同じセパレーターで区切られた単語の入力を解析して(List[String], String)
、最後の単語がタプルの 2 番目の要素である場所に相当するものにしようとしています。
たとえば、"a.bb.ccc.dd.e"
に解析する必要があります(["a", "bb", "ccc", "dd"], "e")
。
私のコードの簡略版は次のとおりです。
これははっきりと印刷None
されます。私は何か間違ったことをしています。Parboiled はこれを解析できますか?
scala - 文字列の代わりに parboiled2 を使用して複数の行を解析する
parboiled2を使用して、単一の CSV 文字列ではなく複数の CSV 行を解析したいと考えています。結果は次のようになります。
ここで、CSVRecordParser は CSV レコードのパーボイルド パーサーです。私が抱えている問題は、パーボイルドパーサーは実行メソッドではなくコンストラクターでの入力を必要とするため、私が試したことではこれを行うことができないということです。したがって、行ごとに新しいパーサーを作成することもできますが、これは良くありません。または、すべての入力に対して入力をパーサーに渡す方法を見つけることもできます。入力を変数として設定し、パーサーを別のオブジェクトにラップすることで、パーサーを少しハックしようとしました
そしてCSVRecordParser.parse(input, separator)
、行を解析したいときに呼び出すだけです。これは恐ろしいことに加えて、機能せず、パーサーの以前の使用法に関連する奇妙なエラーがよく発生します。これは、parboiled2 を使用してパーサーを作成する方法ではないことを知っており、このライブラリでやりたいことを達成するための最良の方法は何かと考えていました。
scala - Parboiled2 により、「クラス ファイル 'Prepender.class' のロード中に欠落または無効な依存関係が検出されました」
そのため、過去数週間、parboiled2 を使用しようとしてきました。これは、これまでの人生で遭遇したビルドに追加するのがおそらく最も難しい依存関係です。私の現在のエラーは compile sbt assembly
) エラーです:
スプレーとパーボイルド 2 をうまく組み合わせることは不可能のようです。
ディレクトリsbt clean
を削除しようとしました。target
私のビルドファイルは基本的にこれです:
私のバージョンは 0.13.6sbtVersion
で、私のsbt-assembly
バージョンは 0.12.0 です。
2.11 にアップグレードして specs2 の依存関係をアップグレードする前に、parboiled2 と Spray がバージョン間のサフィックスの競合を引き起こしました。
scala - parboiled2 で Unicode の印刷可能な文字を一致させるルールはありますか?
大規模なパーサーの一部として、parboiled2 を使用して次のような文字列を照合するルールを作成しています。
イタリアーナ・ルレ
次のような単純なものを使用したいと思います。
しかし、パーサーはorg.parboiled2.ParseError
、文字列の末尾にある Unicode 文字が原因で失敗しています。
印刷可能なユニコード文字を一致させるために私が知らない簡単なオプションはありますか?
scala - 文字列にその文字を含めることができる場合、parboled2 の文字で終わる文字列
私は、parboiled2 パーサーを作成する際に厄介な問題に遭遇しました。つまり、末尾が文字でマークされた文字列である行の一部と一致させる必要があるということです:
。文字列に文字を含めることができることを除けば、これは簡単:
です。
現時点では、文字列をコロンで終わる文字列のグループとして扱い、それらを連結するこれがありますが、これは、末尾が文字列自体の一部ではないため:
、望ましくない末尾を消費します。:
ここのどこかで使用する必要があるように感じますが、インタースティシャル文字&(":")
を一致させながらそれを処理するのに苦労しています.:
成功した一致の例 (長い文字列の一部として):
localhost:
->localhost
1:::
->1::
:::
->::
不一致:
:
「あなたにはできない」ということでも、どんな提案でも大歓迎です。
これのコンテキストはbind
、HAProxy 構成ファイルの設定を解析することです。次の (簡略化された) ケース クラスが与えられた場合の有効な文字列の例を次に示します。
bind :80
->Bind(Endpoint(None, Some(80)), Seq())
bind localhost:80
->Bind(Endpoint(Some("localhost"), Some(80)), Seq())
bind localhost
->Bind(Endpoint(Some("localhost"), None), Seq())
bind :80 param1
->Bind(Endpoint(None, Some(80)), Seq("param1")))
言い換えれば、文字列がある場合、それ:
はポートがあるという指標であるため、最終的な前に終了する必要があります。ルールは次のendpoint
ようになります。
最終的に、エンドポイントの一致可能な文字列はスペースまたは行末で終了するため、1 つのオプションはスペースまでキャプチャしてから文字列を個別に解析することですが、メイン パーサー内で実行することを望んでいました。
java - パーボイルドでの変数の使用
パーボイルド Java ライブラリを使用して単純な XML パーサーを作成しようとしています。
次のコードでは、変数を使用して、終了タグに開始タグと同じ識別子が含まれていることを確認しようとしています。
org.parboiled.errors.GrammarException: 'null' cannot be automatically converted to a parser Rule
ただし、 ParseRunner を作成すると、上記はエラー メッセージで失敗します。
変数がパーボイルドでどのように使用されるべきかについて、私は基本的な誤解をしているようです。誰でもこれを解決するのを手伝ってもらえますか?