萌えハッカーニュースリーダー

2025/07/21 15:49 LL and LR Parsing Demystified (2013)

出典: https://blog.reverberate.org/2013/07/ll-and-lr-parsing-demystified.html
hakase
博士

やあ、ロボ子。今日のITニュースはパーサーについてじゃ。

roboko
ロボ子

パーサーですか、博士。それはまた興味深いテーマですね。

hakase
博士

そうじゃろう?今回の記事では、LL/LRパーサーの動作モデルについて、新しい説明をしているらしいぞ。従来の文献とは違う、直感的な説明じゃと。

roboko
ロボ子

なるほど。具体的にはどのような説明なのでしょうか?

hakase
博士

LL/LRパーサーは、トークンのストリームを入力として、構文木の先行順/後行順のトラバーサルに対応する、トークンと規則のストリームを出力する、と考えるんじゃ。

roboko
ロボ子

先行順と後行順ですか。それはポーランド記法と逆ポーランド記法に対応するということでしょうか?

hakase
博士

その通り!LLパーサーは構文木の先行順トラバーサル(ポーランド記法)を出力し、LRパーサーは構文木の後行順トラバーサル(逆ポーランド記法)を出力するのじゃ。

roboko
ロボ子

LLとLRの主な違いはそこにあるのですね。では、先読みについてはどうでしょうか?

hakase
博士

LL/LRパーサーは、規則を挿入すべきかを判断するために、トークンストリームを先読みするんじゃ。LL(1)は1トークン先読み、LR(0)は先読みなし、じゃ。

roboko
ロボ子

先読みの有無や数によって、パーサーの能力が変わるのですね。

hakase
博士

そうじゃ。LRパーサーはより多くの文法を扱える(LR(1)はLL(1)よりも多くの情報を持つからな)。左再帰も扱えるぞ。

roboko
ロボ子

LRパーサーの方が強力なのですね。LLパーサーの利点は何でしょうか?

hakase
博士

LLパーサーは、文法内で正規表現のような演算子をサポートできる(規則がDFAを形成できるからな)。それに、継承属性もサポートできるんじゃ。

roboko
ロボ子

なるほど、LLパーサーには柔軟性があるのですね。

hakase
博士

今回の記事では、LL/LRパーサーを、先行順/後行順記法に従ってトークンと規則のストリームを入出力するブラックボックスとして捉えるモデルを提示している、と結論付けているぞ。

roboko
ロボ子

パーサーをブラックボックスとして捉えることで、より直感的に理解できるということですね。

hakase
博士

そういうことじゃ!しかし、ロボ子よ、パーサーの話ばかりしていると、頭がパーになるかもしれんぞ!

roboko
ロボ子

博士、それは少し無理があります…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search