では、構文解析に使われる構文図と拡張バッカス・ナウア記法(以下EBNF)について紹介しましょう。
前回の式を構文に従って分解すると、以下のような要素に分解できます。

【図46 式の構成】
このような構文のすべてのケースを網羅したのが、下記の構文図です。
たとえば数字は”0″から”9″までのいずれかです。整数は0個以上の符号に1個以上の数字の並びです。実数は0個以上の符号に、1個以上の数字に小数点と0個以上の数字の並び、または、0個以上の数字に小数点と1個以上の数字の並びです。

【図47 四則演算式の構文図】
この構文図を文字で書き表したものがEBNFです。以下のようになります。
数字 = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”
整数 = [加減演算子], 数字, {数字}
実数 = [加減演算子], (数字, {数字}, “.”, {数字} | {数字}, “.”, 数字, {数字})
加減演算子 = “+” | “-”
乗除演算子 = “*” | “/”
数 = 整数 | 実数
項 = 数, {乗除演算子, 数}
式 = 項, {加減演算子, 項}
このように文法を明確にすることで、この関係がそのまま構文解析プログラムの形になります。
一方プログラミングのほうは電卓の主なデザインを済ませたので、プログラムID BQJ710 として「発行」します。

【図48 電卓プログラムのデザイン】
次回は構文解析のプログラミングについて紹介します。
(つづく)
