問題タブ [parser-generator]
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 - 接尾辞合意をサポートするパーサー ジェネレーターまたはライブラリ
私はいくつかの言語の構文パーサーに取り組んでいます。しかし、この言語では接尾辞の一致が非常に必要です。たとえば、英語では、I,we,you-do または he,she,it,this-does などのように、動詞は代名詞と一致する必要があります。この言語では、動詞は代名詞ごとに異なる形式を持ちます。私は文献でこれが統一法で処理されていることを知っています。しかし、Java での実装は見つかりませんでした。また、スタンフォード パーサーと ANTLR についても調査しましたが、それらが接尾辞の一致をサポートしているという証拠は見つかりませんでした。
したがって、どのツールまたはlib. この状況で私を提供してくれませんか?
前もって感謝します。
parsing - 解析で使用される FIRST および FOLLOW セットとは何ですか?
FIRST セットと FOLLOW セットとは何ですか? それらは解析で何に使用されますか? トップダウンまたはボトムアップのパーサーに使用されますか?
次の一連の文法規則について、FIRST および FOLLOW SETS について説明してもらえますか。
actionscript-3 - マルチレベル解析アルゴリズム
言い換えて...
関数/条件を解析する最善の方法を知りたいです。したがって、次のようなものがある場合、[if {a} is {12 or 34}][if {b} not {55}] show +c+ [/if][/if]
これは条件内の条件です。正規表現のみではこれを行うことができないようです。
元の質問
今のところ、アクション スクリプトを使用していくつかのコマンドを解析する非常に簡単な方法があります。
タグ、コマンド、オペランドを見つけるために正規表現を使用しています...
私の現在のアルゴリズムは、一致しない場合でも、開始タグ[**]
と最初の終了タグを一致させます。[/**]
つまり、次のようなことができなかったことを意味します[ifempty +val_2+][ifnotempty +val_2]+val_3+[/ifnotempty]+val_4+[/ifempty]
-基本的に、ある条件を別の条件の中に入れます。
この正規表現に基づいて文字列を文字列の配列に分割するインライン解析方法を使用しています\[[^\/](?:[^\]])*\](?:[^\]])*\[\/(?:[^\]])*\]
より堅牢な解析規則/標準を使用して、より堅牢なアルゴリズムを提案できる人はいますか? 特にas3の場合。
pdf - PDF ファイルからのテキスト データの抽出
RでPDFファイルからテキストデータを解析することは可能ですか? そのような抽出に関連するパッケージはないようですが、Rでこれを試みた、または見た人はいますか?
Python には PDFMiner がありますが、この分析はできればすべて R で行いたいと考えています。
助言がありますか?
c# - HTMLファイルを解析して情報をプログラムで送信する方法
ASP.NET 4&C#および
次のようなWebアプリケーションを作成するのに、どのコード、クラスが役立つか知りたいのですが。
また、実装方法:
このタスクを達成するためのクラスと一般診療およびCODEを理解することに興味があります。
何かアイデアがあれば教えてください。皆さんのサポートにもう一度感謝します!:-)
php - Lemon Parser-Generator: 非終端記号は評価されませんか?
私はパーサーを学ぼうとしています。私の C スキルはかなり低いので、パーサー ジェネレーターについて学ぶためにPHP Lemonをググってみました。とにかく、ここのコードは通常のレモンの友達にも読めるはずです。
構文解析の質問を処理するときはいつものように、まず簡単な電卓を作成することから始めます。
したがって、私の最初のステップは単純に次のとおりです。
最初のテストを解析するもの:
...次の結果へ:
だから、すべてが期待どおりです。ここで、最終的に操作を処理できるようにするステップの準備を試みますexpression
。
ここで同じテストを実行すると、同じ出力に加えてgot a value: 13
. しかし、私はこれを取得します:
さて、何が起こったのですか?結果行が空なのはなぜですか? 明らかに「13」のexpr
a に評価されます。VALUE
レモンは評価を気にしませんか?どういうわけか自分でそれをしなければなりませんか?しかし、この時点で何も得られない場合はどうすればよいでしょうか。
compiler-construction - トップダウン パーサーは、「コード」に適切なケース例の左再帰が必要です
こんにちはスタック オーバー フロー メンバーです。
私はコンパイラクラスのために勉強しています。トップダウン パーサーは左再帰を避け、右再帰に変換する必要があることを理解しました。
質問は、
a) トップダウン パーサーが LL に等しく、ボトムアップ パーサーが LR に等しいことを理解していますか?
b) 左再帰は自分自身を呼び出すルールであることがわかりました ex) Expr :== Expr '+' Term | Expr を見つける無限ループを引き起こす項。とにかく、C または Java での入力を考慮するサンプル コードはありますか? ( パーサーやスキャナーのコードはいらない ) 必要なのは、左再帰による無限ループが発生するセンテンシャル形式のコード例です。
c) トップダウン パーサーで右再帰を使用する方法で実際に何が違いますか?
ANS c) バックトラックの必要性をなくす。しかし、他の何か?
ANS b)x - 2 * y
だけでなく、他の何か? これはバックトラックの解析方法で動作するためです。
非左再帰と左再帰の両方を発見した事例。
左再帰文法
非左再帰文法
どちらも無限ループに陥っています。
専門家の皆様、ありがとうございました。
parsing - BNF を書くとき、{ と } の間に何が入りますか?
BNFで困っています。物事を行う標準的な方法(ある場合)と思われるものと、charやintなどの型、またはすでに組み込まれているものがあるかどうかはわかりません。
ただし、私の主な問題は、中括弧内の BNF の部分がどのように機能するかを理解していないことです。
次のようなものが与えられます:
(これはどこかから簡単に盗まれたもので、yacc / C 用です)
中括弧内は実際に何を言っているのでしょうか? ハッピーパーサージェネレーターについても同様のことを調べましたが、同様に混乱しました。
c++ - カスタム言語を解釈する方法
実際にバイナリ ファイルを処理する C++ のアプリがあります。バイナリ ファイルは、A/B/C などのイベントのコレクションであり、ファイルでイベント A を検出すると、アプリは「ハンドラー A」でイベントを処理します。
ここで、カスタム言語で別のスクリプトを作成する必要があります。このスクリプトは、バイナリ ファイル処理と直交して実行されます。スクリプトには次のようなものがあります。
そのため、アプリがバイナリ ファイルからイベント "A" を処理するとき、アプリはこのスクリプト ファイルを解析し、OnA をチェックして、OnA proc のステートメントをアプリでサポートされているルーチンに変換する必要があります。たとえば、QueryVariable は、アプリで定義された変数「cat」の値を変数「C」にコピーする必要があります。アプリは、スクリプト内の言語の構文/セマンティクスもチェックする必要があります。デザインを決定するための最良の情報はどこで入手できますか? 構文木/文法に関する私の知識は本当に弱体化しています。
ありがとう
parsing - LL パーサーには LR パーサーよりも優れている点は何ですか?
今日のパーサー生成ツールで LL パーサーが相対的に人気を博しているのは、LR パーサーよりも LL パーサーが優れている点は何ですか?
Wikipediaによると、LR 解析は LL よりも優れているようです。
LR 構文解析は LL 構文解析よりも広い範囲の言語を処理でき、エラー報告にも優れています。つまり、入力が文法に準拠していない場合に構文エラーをできるだけ早く検出します。これは、バックトラッキングのために文法の別のブランチにエラー検出を延期する可能性のある LL(k) (またはさらに悪い場合は LL(*) パーサー) とは対照的であり、多くの場合、長い共通の接頭辞を使用した選言全体でエラーをローカライズするのが難しくなります。 .
注: これは宿題ではありません。Antlr が LL パーサー ジェネレーターであることを知ったときは驚きました (名前に「LR」が含まれているにもかかわらず!)。