この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の21日目の記事です。 昨日は人力で構文解析を行った。 今日はその処理をC言語で実装する。 構文解析のアルゴリズム 解析木作成のgifアニメを作った。まずこれを5周ぐらい見て欲しい。 これは再帰下降と呼ばれるアルゴリズムだが、日本語で説明すると ノード属性N0を解析するパーサに、トークンの列[T1, T2, T3, T4, T5]が入力される N0解析パーサは、N0を定義するBNFを参照し、[T1, T2, T3]がN1のノード属性を持つと特定する N0のノードの下に、N1のノードを生やす N1を解析するパーサに、トークンの列[T1, T2, T3]が入力される N1解析パーサは、N1を定義するBNFを参照し、[T1, T2]がN3のノード属性を持つと特定する N1のノードの下に、N2のノード