簡約!? λカ娘 Go!に「きつねさんでも分かるLR構文解析」書きました

またMotiPizzaさん所のLLVM狐さん(この表紙)から派生した妄想原稿なんだ、済まない。
キャラ設定については完全に公式設定とは別になっているのでご注意を。
とりあえずLLVM狐本は一般書籍で出たので、買って職場にさりげなく置いて「あっこんなところにLLVMの本が! 一体誰が?」とかするのに最適ですね!!
MotiPizzaさんの新刊はClangらしいですね。

さて、(他所様の)宣伝はこれくらいにして、λカ娘新刊、「簡約!? λカ娘 Go!」に「きつねさんでも分かるLR構文解析」的な記事を書いたのでそのこぼれ話でも。サンプルPDFも出てます。

ことのはじまり:
C82で3日で出来るLLVMが出る
→買う
当日深夜から妄想開始

名前も乙女コスモから降ってきて、コヨネ(黒髪のバックエンド)とキヒメ(金髪のフロントエンド)に。
※ちなみに名前と、どっちがフロントエンドかっていう設定は公式設定とは異なります。

この翌日時点で4ページくらいのPDFが生成される。
それは結局togetterの妄想リストの大半を取り入れて、λカ娘(4)の第1章「インターフェース」として出ました。二人が仲良くなるまでのお話です。14ページになった。
完全に妄想のみを形にした感じですが、簡約!λ力娘4を2倍くらい楽しむための予備知識。というありがたい技術用語解説ができたりと好評だったようです。

で、今回の簡約!? λカ娘 Go!の記事は、内容的にはLR(k)構文解析法の技術解説がメインな感じになっています。
今回は妄想度とかイチャイチャ度とかが足りませんか? すいません。LR構文解析についてコヨネにレポート書かされるキヒメちゃんの気分で、LRを理解して書くだけで精一杯だったので色々書ききれませんでしたが、舞台裏で何が起きていたのかをここで述べたいと思います。

まずはじめに、物理世界の片隅で私が中華料理を食べていた時、キヒメとコヨネが形式言語理論の話でイチャイチャしだした。有限オートマトンとかpumping lemmaとか。急でしたが当然ThinkPad持っていたので、うおおおお、お前ら馬鹿だろwww(※馬鹿は書いてる私です)とか思いながら、2時間ほど無限中国茶しながらTeXに落としていました。
残念ながら、このあたりの話は今回の原稿には載せられませんでしたが……。

その後、二人の話は文脈自由文法と構文解析の話に。
キヒメ「えるあーるって何?」
コヨネ「えっ」
キヒメ「えっ」
コヨネがおおざっぱに説明しても全然ピンとこないキヒメ。
キヒメ「大丈夫だよ、構文解析はコヨネがしてくれるもん。コヨネ作る人、わたし食べる人」
構文解析は大の苦手なキヒメはあきらめモード。
しかし、自分のテリトリーのことでキヒメにトラウマモードに入られるのが面白くないコヨネは一計を案じます。
コヨネ「LR法は実はinterprocedural control flow analysisとかとも関連があるのよ」
キヒメ「!?」
コヨネ「control flow analysisは好き?」
キヒメ「コード解析大好きです」
コヨネ「じゃあLR法は?」
キヒメ「うっ……」
コヨネ「好きなものからの多項式還元ができるものも好きなはずよね?」
キヒメ「ううっ……コヨネのいじわる」
ともあれ、バックエンドたるキヒメちゃんはコード最適化とかが絡むと反応せざるをえないようで、それからしばらく、コヨネと一緒に論文を漁ってました。
キヒメ「なるほど! コード解析と構文解析の間の関係についてなんとなく分かった気がする!」
コヨネ「じゃあLRは?」
キヒメ「うっ……LRが出てくるの以外は、分かった気がする……」
コヨネ「じゃあ次はLRを分かる番よね?」
キヒメ「ううっ……」
コヨネ「ここまで来て引き返せないわよね?」
キヒメ「それはそうだけど、前に進める気もしないって言うか……」
コヨネ「大丈夫よ、私が手取り足取り教えてあげるから」
キヒメ「ううっ……」
ということで押し切られたキヒメ。たぶん二人はそれぞれ嫌いな○○の前、好きな○○の前、みたいな顔してたと思う。

そうして、LR勉強会が開始されたのですが、コヨネが思っていたよりもかなり難航します。
最初は、教科書とかオンラインの講義資料とかを使ってやっていたのですが、

キヒメ「このLR項って何?」
コヨネ「それはこの黒丸の所まで解析できた、みたいな意味で……」
キヒメ「??????」
コヨネ「えっ…」

キヒメ「なんか、ページめくったらいきなり変な有限オートマトンっぽいものが出てきて分からなくなったんだけど……わたしたち、正規言語じゃなくて文脈自由言語の話してなかったっけ?」
コヨネ「……オーケー。とりあえずその前のページまでは分かってくれた?」
キヒメ「……ごめん、前のページからよく分かってない、です」
コヨネ「……どこまでなら分かったの?」
キヒメ「……さ、さんページめから、分からない、です」
コヨネ「それってd.y.d.で読んだこと以上のことはまだ分かってない、ということね……」
キヒメ「ううっ……わたしってこんなにバカだったっけ……?」

全く理解できないキヒメ。全然分かってもらえないコヨネ。凹む二人。
それでもコヨネはキヒメに分かるような説明をあれこれと考え、3日にわたる二人の勉強会の結果、ついに二人は「キヒメでも分かるLR構文解析」に到達したのであった……!!
めでたしめでたし。

という感じで脳内補完しながら読んでくださるといいかもしれません。

というわけで、2013年8月12日(月) コミックマーケット84 3日目 東ペ06a で参加します
「きつねさんでも分かるLR構文解析」的な記事が載ってる最新刊「簡約!? λカ娘 Go!」の他、前回の妄想記事が載ってる「簡約! λカ娘 (4)」他既刊も頒布予定です。

※単に「書いたよ!」って書くだけのつもりが妄想が展開してしまった。どうしてこうなった。