問題タブ [pyparsing]
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 - Java の pyparsing に似たライブラリはありますか?
Java で HTML に似たマークアップ言語の非常に単純化されたバージョンのパーサーをすばやく構築する必要があります。Python では、これを行うために pyparsing ライブラリを使用します。Javaに似たものはありますか?HTML 解析用のライブラリが既に存在することを示唆しないでください。私のアプリケーションは、オブジェクトのツリーをたどり、ビジター パターンを使用してテキストにシリアル化する方法を示す学校の課題です。基本的にここで必要なのは、タグ、属性、およびテキスト ノードだけです。
python - pyparsing を使用した再帰パーサーの作成に関するヘルプが必要
解析のためにpython pyparsingを試しています。再帰パーサーの作成中に行き詰まりました。
問題を説明しましょう
要素のデカルト積を作りたいです。構文は次のとおりです。
より具体的に言います
したがって、一般的な形式は、最初のグループには n 個の要素 (a、b、c、d) があります。2 番目のグループには 1 つの要素が含まれるため、最終的な出力はデカルト積になります。
次のように n レベルに進むことができるため、構文を再帰的にする必要があります。
これは、a,b を c1 と交差させることを意味します。結果を y としましょう。y と c2 を再び交差させます。
これは n レベルまで可能です cross(cross(cross(cross......
私が欲しいのは、 setparseAction を使用してオブジェクトを初期化することです
だから私は2クラスを持っています
これについて助けが必要です。再帰パーサーを作成できません。
python - Google App Engine で PyParsing をセットアップするにはどうすればよいですか?
Google App Engine のドキュメントで、http: //www.antlr.org/ Antlr3 が解析サードパーティ ライブラリとして使用されていることを確認しました。
しかし、私が知っていることから、Pyparsing の方が使いやすいようで、単純な構文を解析することだけを目指しています。
代替手段はありますか?App Engine で pyparse を動作させることはできますか?
python - PyParsing 単純な言語式
いくつかのコードを解析するものを書こうとしています。foo(spam)
andを正常に解析できますspam+eggs
が、foo(spam+eggs)
(再帰降下? コンパイラーからの私の用語は少し錆びています) 失敗します。
次のコードがあります。
python - Python で SQL を解析する
非リレーショナル データ ストア上に SQL インターフェイスを作成したいと考えています。非リレーショナル データ ストアですが、リレーショナルな方法でデータにアクセスすることは理にかなっています。
ANTLRを使用して、SQL を関係代数式として表す AST を生成することを検討しています。次に、ツリーを評価/ウォークしてデータを返します。
これまでパーサーを実装したことがないので、SQL パーサーとエバリュエーターを最適に実装する方法についてアドバイスをお願いします。
- 上記のアプローチは正しいと思いますか?
- 調べる必要がある他のツール/ライブラリはありますか? PLYやPyparsing のように。
- 私を助ける記事、本、またはソースコードへのポインタは大歓迎です。
アップデート:
pyparsing を使用して単純な SQL パーサーを実装しました。データ ストアに対するリレーショナル操作を実装する Python コードと組み合わせると、これは非常に簡単でした。
コメントの 1 つで述べたように、演習のポイントは、レポート エンジンがデータを利用できるようにすることでした。これを行うには、おそらく ODBC ドライバーを実装する必要があります。これはおそらく大変な作業です。
.net - .NET 用に存在する pyparse に最も近いものは何ですか?
私が特に興味を持っているのは、コード内の文法を不必要な手抜きのない通常のコードとして定義できることです。
IronPython を使用できることは承知しています。したくない。
アップデート:
私が探しているものをさらに説明するために、いくつかのサンプル pyparsing コードを含めています。これは、emacs のショートカット キーを従来の表記法に変換するための不完全なパーサーです。もちろん、この例は文字列関数で十分なほど小さいですが、pyparse のクリーンさと簡潔さを示すためのものです。
.NET で文法を数行で簡単に記述できるようにしたいと考えています。
python - pyparsing - ABNF をロードしますか?
pyparsing は、Python オブジェクトに関して定義する代わりに、ファイルから ABNF を読み取ることができますか?
そうでない場合、同様のことができるものはありますか(ABNFファイルをパーサーオブジェクトにロードします)
python - pyparsing でインデントとデデントを解析するにはどうすればよいですか?
Python 文法のサブセットを次に示します。
(Python SVN リポジトリで完全な文法を読むことができます: http://svn.python.org/.../Grammar )
この文法を使用して、Python で Python 用のパーサーを生成しようとしています。私が問題を抱えているのは、INDENT
およびDEDENT
トークンを pyparse オブジェクトとして表現する方法です。
他の端末をどのように実装したかを次に示します。
terminal_action
引数に応じて、対応する解析アクションを返す関数です。
ヘルパー関数は知っていますが、トークンpyparsing.indentedBlock
なしで文法に採用する方法がわかりません。PEER
(私が話していることを確認するには、 pyparsing ソースコードを見てください)
ここで私の完全なソースコードを見ることができます: http://pastebin.ca/1609860
python - pyparsingを使用して単語のエスケープを解析する-複数の行に分割
pyparsing\\n
を使用して、バックスラッシュと改行の組み合わせ( "")を使用して複数行に分割できる単語を解析しようとしています。これが私がしたことです:
私が得る出力はです['super']
が、期待される出力は['super', 'cali', fragi', 'listic']
です。それでも、それらすべてを1つの単語として結合する方がよいでしょう(これは、で実行できると思いますmulti_line_word.parseAction(lambda t: ''.join(t))
。
pyparsing helperでこのコードを調べてみましたが、エラーが発生しますmaximum recursion depth exceeded
。
編集2009-11-15:後で、空白に関して構文解析が少し寛大になることに気付きました。それは、私が構文解析していると思っていたものがはるかに緩いといういくつかの悪い仮定につながります。つまり、単語のどの部分、エスケープ、およびEOL文字の間に空白がないようにする必要があります。
上記の小さな例の文字列はテストケースとしては不十分であることに気づいたので、次の単体テストを作成しました。これらのテストに合格したコードは、私が直感的にエスケープスプリットワードと考えているものと一致する必要があります。エスケープスプリットワードのみです。エスケープスプリットではない基本的な単語とは一致しません。そのために別の文法構造を使用することができます(そしてそうすべきだと私は信じています)。これにより、2つを別々にすることですべてが整頓された状態に保たれます。