私は、PHP、JavaScript、およびCSS用のボトムアップパーサーを作成しています。できれば、すべての言語を解析できるパーサーを作成したいと思います。私は、JavaScriptがLALR(1)パーサー(私が間違っている場合は私を修正してください)と解析できると聞いていました。 PHPやCSSにはLALR(1)パーサーで十分でしょうか、別のものを書く必要がありますか?PHP/JavaScript/CSSに必要なパーサ精度?
1
A
答えて
2
これら3つの言語すべてを解析するパーサーを1つ実装することはできません。 3パーサーが必要だと思います。あなたが意味するものであれば、彼らは解析エンジンを共有するかもしれません。
「あまりにも多く」を受け入れることで、構文解析技術はかなり言語を解析することができます(構文解析の仕組みが十分に強力ではないため)。キャプチャされた構造(通常はAST)受け入れられた超過分を検査/処理/排除する。
議論は、あなたが収集しなければならないもののどれくらいのものであり、許容された超過を排除するのはどれほど苦痛であるかです。
だから、LALR(1)がそれを行います。存在証明もあります。 PHPインタプリタはBison(LALR(1))を使用して実装されています。 PHPのtarballをダウンロードしてそれを掘り下げて、あなた自身でこれを発見することができます。
私はCSSが厳しい文法だとは思わない。私はそれがたくさんあると思う。
JavaScriptは、「パーサがエラーなしでエラーを出す場合に存在し、存在していると思われる」と定義されているため、セミコロンの問題が見つからないことがあります。したがって、本質的に、パーサーのエラー処理機構を悪用して回復する必要があります。
あなたは多くの作業を見ています。既存のパーサを手に入れるのは簡単ではないでしょうか?または理由のために1つの統合された機械が必要ですか?
関連する問題
- 1. C++倍精度/精度
- 2. 精度
- 3. 精度
- 4. DATETIME2精度が
- 5. TFlearn精度
- 6. xlswrite精度matlab
- 7. 低精度
この質問には、実際にはPHP/javascript固有のものではないので、これらの言語でパーサーを書く予定がない限り、追加のタグを追加する必要があります。おかげさまで – Jay