問題タブ [parsing]
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.
parsing - yacc/ocamlyacc での reduce/reduce 競合の解決
演算子なしの関数適用 (Ocaml や Haskell など) と、2 項演算子と単項演算子の通常の組み合わせをサポートする ocamlyacc (通常の yacc とほぼ同じ) で文法を解析しようとしています。減算と否定の両方に使用できる「-」演算子との削減/削減の競合が発生しています。ここに私が使用している文法のサンプルがあります:
問題は、"a - b" のような式を取得した場合、パーサーはこれを "a (-b)" (b の否定、その後に適用) と縮小するか、"a - b" (減算)。減算削減は正しいです。そのルールを優先して競合を解決するにはどうすればよいですか?
unicode - Antlr 文法に Unicode 文字を入れるにはどうすればよいですか?
私は次の文法を構築しようとしています:
数値: 整数 | フロート | インフィニティ | インフィニティ | PI ... INFINITY: '∞' PI: 'π'
しかし、Antlr は文法のロードを拒否します。
ant - Antlr Ant タスクはどこで入手できますか?
次のように、Ant build.xml で Antlr タスクを呼び出そうとしています。
しかし、Ant はタスク定義を見つけることができません。その中に次のすべてを入れましたdir.lib.build
:
- antlr-3.1.jar
- antlr-2.7.7.jar
- antlr-runtime-3.1.jar
- stringtemplate-3.2.jar
しかし、それらのどれもタスク定義を持っていないようです。(これらの jar を Ant クラスパスに入れてみましたが、同じ問題です。)
java - Javaで推奨するHTML解析ライブラリは何ですか
いくつかの属性/タグなどの値を見つけるために、いくつかの HTML を解析したいと考えています。
どの HTML パーサーをお勧めしますか? 長所と短所はありますか?
algorithm - 優先順位付きの方程式 (式) パーサー?
バイナリ (+、-、|、&、*、/ など) 演算子、単項 (!) 演算子、および括弧を処理する単純なスタック アルゴリズムを使用して、方程式パーサーを開発しました。
ただし、この方法を使用すると、すべての優先順位が同じになります。演算子に関係なく左から右に評価されますが、括弧を使用して優先順位を強制できます。
したがって、現在 "1+11*5" は 60 を返します。予想される 56 ではありません。
これは現在のプロジェクトに適していますが、後のプロジェクトで使用できる汎用ルーチンが必要です。
明確にするために編集:
優先順位を付けて方程式を解析するための優れたアルゴリズムは何ですか?
実装が簡単で、利用可能なコードのライセンスの問題を回避するために自分でコーディングできることを理解することに興味があります。
文法:
文法の質問がわかりません - これは手書きで書いたものです。YACC や Bison を必要としないほど単純です。「2+3 * (42/13)」などの式で文字列を計算するだけです。
言語:
私はこれを C で行っていますが、言語固有のソリューションではなく、アルゴリズムに興味があります。C は低レベルなので、必要に応じて別の言語に簡単に変換できます。
コード例
上記で説明した単純な式パーサーのテスト コードを投稿しました。プロジェクトの要件が変更されたため、プロジェクトに組み込まれていないため、パフォーマンスやスペースのためにコードを最適化する必要はありませんでした。これは元の詳細な形式であり、容易に理解できるはずです。演算子の優先順位に関してさらに何かを行う場合は、プログラムの残りの部分と単純に一致するため、おそらくマクロ ハックを選択します。ただし、これを実際のプロジェクトで使用する場合は、よりコンパクトで高速なパーサーを使用します。
関連する質問
-アダム
xml - UNIX端末を使用したXMLの解析
XML ファイルから任意のデータをすばやく抽出して、CSV 形式にする必要がある場合があります。Unix ターミナルでこれを行うためのベスト プラクティスは何ですか? いくつかのコード例が欲しいのですが、たとえば、次の問題を解決するにはどうすればよいですか?
XML 入力の例:
私の望ましいCSV出力:
parsing - 解析、それについてどこで学べますか
私は、ある言語を別の言語に「翻訳」する仕事を与えられました。ソースは、正規表現を使用した単純な行ごとのアプローチには柔軟性が高すぎる (複雑)。字句解析とパーサーについて詳しく知るには、どこに行けばよいですか?
python - Python での字句解析、トークン化、解析のリソース
Python を使用した字句解析、解析、およびトークン化に関するリソースを教えてもらえますか?
私はオープン ソース プロジェクト ( hotwire ) で少しハッキングを行っており、入力されたコマンドをlexes、解析、およびトークン化するコードにいくつかの変更を加えたいと考えていました。これは実際に動作するコードであるため、かなり複雑で、解決するのが少し困難です。
これまでに lex/parse/tokenise のコードに取り組んだことがないので、この側面に関するチュートリアルを 1 つまたは 2 つ実行するのが 1 つのアプローチになると考えていました。実際に変更したいコードをナビゲートするのに十分なことを学びたいと思っています。そこに適したものはありますか?(理想的には、最初にドラゴンの本を購入して読むことなく、午後に行うことができます...)
編集: (2008 年 10 月 7 日) 以下の回答のどれも、私が望むものをまったく与えてくれません。それらを使用して、パーサーをゼロから生成できましたが、lex や yacc などのツールを使用せずに、独自の基本的なパーサーをゼロから作成する方法を学びたいと考えています。そうすることで、既存のコードをよりよく理解できるようになります。
それで、誰かがPythonだけを使って基本的なパーサーをゼロから構築できるチュートリアルを教えてもらえますか?
c# - C#には、ページ番号文字列の解析に対する組み込みのサポートがありますか?
C#には、ページ番号の文字列の解析に対する組み込みのサポートがありますか?ページ番号とは、コンマとダッシュで区切られた印刷ダイアログに入力できる形式を意味します。
このようなもの:
本当に素晴らしいのは、文字列で表されるすべてのページ番号のある種のリストを返してくれるソリューションです。上記の例では、次のようにリストを取得すると便利です。
簡単な方法があれば、自分で転がすのは避けたいだけです。
compiler-construction - パーサー、インタープリター、およびコンパイラーに関する学習リソース
私はしばらくの間(表面上は学習体験のために)自分の言語を書くことで遊んでみたいと思っていたので、パーサー、インタープリター、コンパイラーの構築に比較的基礎を置く必要があります。それで:
- パーサー、インタープリター、およびコンパイラーの構築に関する優れたリソースを知っている人はいますか?
編集:私はLex、Yacc、Bisonなどのコンパイラコンパイラ/パーサコンパイラを探していません...