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

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

私は何も…!

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

Search