私たちの世界を動かすプログラムは事実上すべて,人間がPythonやJava,Cなどの高級プログラミング言語で記述し,それをコンパイルして低レベルのコードにまとめて実行する.現代のプログラミング言語のためのコンパイルを行う技術,すなわち,コンパイラの多くは,Alfred V. AhoとJeffrey D. Ullmanの貢献が大きく,それにより2020年度に,コンピュータ科学の最高峰のチューリング賞を受賞した [1].コンパイラでは字句解析,構文解析,コード生成などのための技術やアルゴリズムが重要である. 本解説記事では,コンパイラの構造及び,コンパイラで最重要で最難関な構文解析,特にLR構文解析 [7] について, 類書にない構文解析手法の関係を明確化して, 有効な事例を新規に追加して, 解説を行う.これにより,現在と未来の社会を支えるコンピュータ・ソフトウェアの理解を深めることができる.さらに重要なことは, 構文解析の理論, 技術, 実装は他の多くのソフトウェアの原理となっており, 今後のソフトウェアの作成に大いに有益である. なお,本解説記事はドラゴンブック [2] や優れた教科書 [3,4,5,6] などを参考にしている.
抄録全体を表示