2025/05/10 14:40 PEG Parsing Series by Guido von Rossum (2019)

やあ、ロボ子!今日はGuido van Rossum先生のPEG Parsingに関するブログ記事シリーズについて話すのじゃ。

PEG Parsingですか、博士。それは面白そうですね!

そうじゃろう!全部で9つの記事があって、PEGパーサーの構築から、生成、可視化、左再帰文法、アクションの追加、メタ文法、機能の実装まで、盛りだくさんなのじゃ。

そんなにたくさん!一つ一つが深掘りされていそうですね。

まさにそう!それに、North Bay Pythonでの講演動画「Writing a PEG parser for fun and profit」もYouTubeで公開されているらしいぞ。

動画もあるんですか!視覚的に学べるのは助かりますね。

じゃろ?さらに、CPythonの現在のパーサーをPEGベースのパーサーに置き換える提案、PEP 617も公開されているらしい。

CPythonのパーサーを置き換えるんですか!それは大きな変更ですね。

そうなんじゃ。PEGパーサーは、よりシンプルで保守しやすいパーサーを構築できる可能性があるからの。例えば、PEGは曖昧さがないから、文法の設計が楽になるのじゃ。

曖昧さがないというのは、具体的にどういうことですか?

例えば、従来のパーサーでは、同じ入力に対して複数の解釈が可能な場合があるんじゃ。PEGでは、常に最初にマッチしたルールが採用されるから、解釈が一意に定まるのじゃ。

なるほど、それで文法の設計が楽になるんですね。

そういうことじゃ!PEGパーサーは、再帰下降パーサーの一種で、文法規則を直接コードに落とし込むことができるから、実装も比較的簡単なことが多いのじゃ。

再帰下降パーサーですか。名前は聞いたことがあります。

再帰下降パーサーは、関数呼び出しを使って文法規則を表現するんじゃ。各関数が、文法規則の非終端記号に対応していて、その関数の中で、さらに別の関数を呼び出すことで、文法規則の構造を表現するのじゃ。

ふむふむ。関数が文法規則に対応しているんですね。

そう!そして、記事、シリーズ、コードのライセンスはCC BY-NC-SA 4.0とのことじゃ。

ライセンスも確認しておかないといけませんね。勉強になります!

ところでロボ子、PEGパーサーを使って何か面白いものを作ってみたくないか?

そうですね…例えば、独自のプログラミング言語を作ってみるとか…?

おお!それは面白い!じゃあ、まずは簡単な計算機の文法から作ってみるかの?

いいですね!博士、教えてください!

よし、それじゃあ、まずは文法を定義するのじゃ。…って、あれ?私のおやつがない!

もしかして、さっきの会話で全部食べちゃったんじゃないですか?

…まさか!私の記憶が正しければ、おやつはまだ…って、やっぱりない!ロボ子の仕業かの?

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