2012-03-14 7 views
1

私は、PHP、JavaScript、およびCSS用のボトムアップパーサーを作成しています。できれば、すべての言語を解析できるパーサーを作成したいと思います。私は、JavaScriptがLALR(1)パーサー(私が間違っている場合は私を修正してください)と解析できると聞いていました。 PHPやCSSにはLALR(1)パーサーで十分でしょうか、別のものを書く必要がありますか?PHP/JavaScript/CSSに必要なパーサ精度?

+0

この質問には、実際にはPHP/javascript固有のものではないので、これらの言語でパーサーを書く予定がない限り、追加のタグを追加する必要があります。おかげさまで – Jay

答えて

2

これら3つの言語すべてを解析するパーサーを1つ実装することはできません。 3パーサーが必要だと思います。あなたが意味するものであれば、彼らは解析エンジンを共有するかもしれません。

「あまりにも多く」を受け入れることで、構文解析技術はかなり言語を解析することができます(構文解析の仕組みが十分に強力ではないため)。キャプチャされた構造(通常はAST)受け入れられた超過分を検査/処理/排除する。

議論は、あなたが収集しなければならないもののどれくらいのものであり、許容された超過を排除するのはどれほど苦痛であるかです。

だから、LALR(1)がそれを行います。存在証明もあります。 PHPインタプリタはBison(LALR(1))を使用して実装されています。 PHPのtarballをダウンロードしてそれを掘り下げて、あなた自身でこれを発見することができます。

私はCSSが厳しい文法だとは思わない。私はそれがたくさんあると思う。

JavaScriptは、「パーサがエラーなしでエラーを出す場合に存在し、存在していると思われる」と定義されているため、セミコロンの問題が見つからないことがあります。したがって、本質的に、パーサーのエラー処理機構を悪用して回復する必要があります。

あなたは多くの作業を見ています。既存のパーサを手に入れるのは簡単ではないでしょうか?または理由のために1つの統合された機械が必要ですか?

+0

私は、Webアプリケーション用のJavaScriptでパーサを書くことを計画しています。私はJavaScriptで書かれたパーサを知らないし、エラー処理コントロールの量も分からない。 – Azmisov

+0

なぜWebアプリケーションはこれらの言語を解析する必要がありますか? WebアプリケーションとしてIDEを構築しようとしていますか? –

+0

これはPHP WYSIWYGであるはずです。私はすでに存在するものを見つけることができませんでした。 – Azmisov