わたしろぐ

私録

LR(1)パーサジェネレータを自作して構文解析をする 第4回:かんたんLR(1)法入門

Category: dev

前回で構文解析器を生成する際に必要となる準備を済ませたため、LR(1)法ベースのパーサジェネレータを作る用意が整いました。 ですが相変わらず本題のパーサジェネレータ作成には入らず、まずはLR(1)法のおおまかな理論的概略の紹介を行います。

LR(1)パーサジェネレータを自作して構文解析をする 第3回:儀式の下準備

Category: dev

前回は字句解析器の作成を行ったので、次にLR(1)法による構文解析のためのパーサジェネレータの作成に入っていきます。 今回は、LR(1)構文解析器の構築のために必要な、終端記号と非終端記号の区別、Nulls集合、First集合の導出等を行えるようにしていきます。

LR(1)パーサジェネレータを自作して構文解析をする 第2回:字句解析器の実装

Category: dev

前回は構文解析の概略を紹介したので、今回から実装に移っていきたいと思います。 まずは字句解析器を用意する必要があるため、今回は字句解析器の作成について紹介します。

なお今回から実際のプログラムを記述していきますが、使用言語はTypeScriptとします。

LR(1)パーサジェネレータを自作して構文解析をする 第1回:かんたん構文解析入門

Category: dev

この記事はKobe University Advent Calendar 2016の21日の記事です。また遅刻か。 なお私は当該大学の学部2年(2016年12月現在)です。


構文解析ができるプログラマはちょっとかっこいいですよね。 「構文解析?ああ、できますよ」とか言って自分のスキルを自慢できそうな印象があります。

(ほぼ)フルスクラッチでTypeScriptによるLR(1)パーサジェネレータを実装した(ついでにLALR(1)パーサも作れる)ので、これを完成させるまでの流れを紹介していこうと思います。

今回は構文解析自体の入門編となります。