3

私は pratt のトップダウン演算子優先順位パーサーを実装していますが、それがどの正式なカテゴリに分類されるかを知りたいのですが、それは LR(1) ですか?

4

1 に答える 1

5

Pratt パーサーは LR パーサーではありません。また、それらは厳密には LL パーサーでもありません。実際、Pratt パーサーは通常、何らかの汎用プログラミング言語で手作業でコーディングされています。この手法は、プッシュダウン有限状態オートマトンのような抽象化に基づいていません。これにより、特定の正式な言語を認識するなど、特定の Pratt パーサーに関するアサーションを証明することがやや難しくなります。

一般に、文法が演算子優先文法である場合、プラット パーサーは言語を認識するように簡単に設計できるため、演算子優先解析がボトムアップであり、プラット パーサーが名目上トップダウン。同じ言語の Pratt パーサーと演算子優先順位パーサーの遷移をトレースすると、類似性が示されます。

したがって、Pratt パーサーの形式を考え出すことは可能かもしれないと思いますが、私の知る限り、存在しません。

于 2013-06-29T17:33:07.647 に答える