問題タブ [ply]
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.
ply - flex (python PLY) 文字列の正規表現
私はPythonモジュールPLYを使用してパーサーを作成しており、実装を進めています。文字列を検出するための簡単なルールがあります。
レクサーエラーがスローされると、次のようになります。
パーサーに次の入力を与えると:
私はこれを返します:
私の質問は次のとおりです。
1) この文字列を解析しないのはなぜですか? 私の正規表現はこの文字列を適切に処理する必要があるようです。
2) どうすればこれを修正できますか?
編集:
問題を少し絞り込みました。次の文字列は、それ自体で不正なレクサー入力エラーをスローします。
python - 変数データを含む正規表現--ply.lex
ply.lex
字句解析プログラムを作成するためにPythonモジュールを使用しています。いくつかのトークンを正規表現で指定しましたが、スタックしました。私はlist of Keywords
誰である必要がありtoken
ます。data
は約1000個のキーワードのリストであり、すべて1種類のキーワードとして認識されます。これは、たとえば、次_Function1 _UDFType2
のようになります。リスト内のすべての単語は、空白で区切られています。そのレクサーにこのリスト内の単語を認識させて、タイプ`KEYWORDのトークンを返すようにします。
そのため、その正規表現に変数を追加しようとしましたが、機能しませんでした。私はいつもgettinです:
No regular expression defined for rule 't_KEYWORD'
。
前もって感謝します!ジョン
python - PLYでテーブルの再生成を防ぐ方法
を介してインストールするPythoneggとしてパッケージ化したコマンドラインアプリケーションでPLYを使用していますpip
。コマンドラインからスクリプトを実行するたびに、次のメッセージが表示されます。
さらに、parser.outファイルとparsetab.pyファイルは、スクリプトが呼び出されたディレクトリに書き込まれます。これらのファイルをアプリケーションに同梱して、毎回テーブルが再生成されないようにする方法はありますか?
grammar - 因数分解 LALR 文法
重複の可能性:
Python/YACC: シフト/リデュースの競合の解決
Yacc のような LALR(1) パーサーを実装する Ply を使用してパーサーを作成しようとしています。しかし、reduce/reduce の難しい競合に遭遇しました。私が知る限り、私の文法にはあいまいさはありません。代わりに、競合は LALR(1) パーサーの制限された先読みに起因しています。A A
パーサーは、還元するかどうかを決定するために 3 番目のトークンがあるかどうかを知る必要があるため、 が発生したときに問題が発生すると推測してt1
います。では、これを単一のトークン先読みのみを必要とする文法にどのように組み込むことができますか?
Ply のデバッグ出力の関連する状態を次に示しますが、あまり意味がわかりません。
python - CR を認識するためのプライ ルールを作成するにはどうすればよいですか?
PLY lexer で \r (0x0d) と \n (0x0a) を区別するのに問題があります。
最小限の例は次のプログラムです
次のようにファイル foo を作成します。
問題ないように見えることを確認します。
ここで、いくつかの CR トークンといくつかの LF トークンを取得すると想定していましたが、次のようになります。
LFトークンしか取得できないことがわかりました。なぜこれが起こるのか、代わりにどのようにすべきかを知りたいです。
これは、Ubuntu 12.04 の Python 3.2.3 です。
python-2.7 - json オブジェクトの文字列化されたリストで ply.lex を使用する
私は部分的にlexedしたjsonオブジェクトの文字列化されたpythonリストを持っています。
しかし、「u'Grimsby'」や「u'Amsterdam'」などのトークンが残っており、実際に「u」で始まるはずの単語トークンを損傷することなく、先行する u を取り除くのに苦労しています。
だから私は誰かが私が書くのを手伝ってくれることを望んでいました
または
これらの「u」を安全に取り除く
ご協力いただきありがとうございます。
python - 行末まで解析するためのレクサー
キーワードがある場合、キーワードが見つかったら、残りの行を取得して文字列として返すにはどうすればよいですか?行末に遭遇したら、その行のすべてを返します。
これが私が見ている行です:
したがって、レクサーが説明に遭遇したときに、「収集する残りのテキストはここにあります」を文字列として返したいと思います。
次のように定義しましたが、エラーが発生しているようです。
これは、返されるエラーの一部です。
最後に、この機能を複数のトークンに使用したい場合、どうすればそれを実現できますか?
御時間ありがとうございます
python - Python PLY Lex のあいまいさ
トークン レベルのあいまいさに問題があります。
問題はこんな感じ。私のコードはこのように見えるので、トークン t_UN1 の優先度が高くなります。
私はそれを達成したいと思います。文字列: NS_XYZ は「IDENTIFIER」として識別され、空白で囲まれた単一の NS_ は「UN_1」として識別されます。
どうすればいいですか?現在、文字列 NS_XYZ は単純に UN1 と IDENTIFIER の 2 つのトークンに分割されています。
python - NoneType エラー、ply から lex.lex を使用
ply を使用し、そのライブラリの lex.lex を使用して、単語/フレーズのリストを解析しようとしています。
以前に単語のリストで lex.lex を使用したことがありますが、for ループを使用してレクサーに入力するだけで問題なく動作しました。
しかし、私は次のエラーが発生し続けます
この機会にlexしようとしているリストは解析されたjsonであり、実際に機能した以前のlexingとの唯一の違いは何ですか?
助けてくれてありがとう。
python - Pyparsing は状況依存文法をサポートしていますか?
用語が間違っている場合はご容赦ください。おそらく、私が欲しいものを説明する「正しい」言葉を手に入れるだけで、自分で答えを見つけるのに十分です.
私は ODL (オブジェクト記述言語) のパーサーに取り組んでいます。これは、NASA PDS (Planetary Data Systems; NASA がデータを公開する方法) だけが使用している難解な言語です。幸いなことに、PDS は最終的に XML に移行していますが、締め切り直前に落ちたミッションのために、まだソフトウェアを作成する必要があります。
ODL は、次のような方法でオブジェクトを定義します。
私はパーサーを で書こうとしてpyparsing
いますが、上記の構造にたどり着くまではうまくいっていました。
OBJECT 行の右側の値が END_OBJECT の RHV と同じであることを保証できるルールを作成する必要があります。pyparsing
しかし、それをルールに入れることはできないようです。両方が構文的に有効な値であることは確認できますが、余分な手順を実行して値が同一であることを確認することはできません。
- これが文脈依存の文法であるという私の直感は正しいですか? これは、この問題を説明するために使用すべきフレーズですか?
- これが理論的な意味でどのような種類の文法であっても、
pyparsing
この種の構造を処理できますか? - それを処理できない場合
pyparsing
、それを処理できる別の Python ツールはありますか? ( /ply
の Python 実装) はどうですか?lex
yacc