2011-01-21 8 views
0

私は原則的に、彼らは、2つの(唯一の違いは、その入力シンボルの タイプに似てあるはずですのにどのように字句解析作品、yaccはどのように文法規則から構文パーサを生成するのですか?

が、構文解析がどのように行われるか全く分からない、

理解してきました、文字またはトークン)。

ただし、生成されるパーサーコードは大きく異なります。生成されたsyntaticのアナライザに使用文法は一般context-free grammarsている間

は特にyy_action,yy_lookahead、そのようなものは字句解析ではありません...字句解析器を生成するために使用

答えて

1

文法は、一般的に、regular grammarsです。彼らは表面で同じように見えるかもしれませんが、彼らは非常に異なる特性と能力を持っています。規則的な文法は、deterministic finite automatonsによって認識することができます。これは比較的簡単に構成でき、速くすることができます。文脈自由文法は、認識器を構築することがより困難であり、通常、構文解析生成ツールは、文脈自由文法のサブセットのみの構文解析器を構築する。たとえば、yaccは文脈自由文法のパーサーを構築します。これは、push-down automataを使用するLALR(1)文法です。

構文解析の詳細については、私が非常にお勧めしますParsing Techniques、非常に(詳細が記載!)詳細の解析のすべての微妙な部分を歩く。

関連する問題