プログラミング講座(49) 構文図・EBNF
では、構文解析に使われる構文図と拡張バッカス・ナウア記法(以下EBNF)について紹介しましょう。
前回の式を構文に従って分解すると、以下のような要素に分解できます。
このような構文のすべてのケースを網羅したのが、下記の構文図です。
たとえば数字は"0"から"9"までのいずれかです。整数は0個以上の符号に1個以上の数字の並びです。実数は0個以上の符号に、1個以上の数字に小数点と0個以上の数字の並び、または、0個以上の数字に小数点と1個以上の数字の並びです。
この構文図を文字で書き表したものがEBNFです。以下のようになります。
<数字>::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
<整数>::={<加減演算子>}<数字>{<数字>}
<実数>::={<加減演算子>}(<数字>{<数字>}"."{<数字>}|{<数字>}"."<数字>{<数字>})
<加減演算子>::="+"|"-"
<乗除演算子>::="*"|"/"
<数>::=<整数>|<実数>
<項>::=<数>{<乗除演算子><数>}
<式>::=<項>{<加減演算子><項>}
このように文法を明確にすることで、この関係がそのまま構文解析プログラムの形になります。
一方プログラミングのほうは電卓の主なデザインを済ませたので、プログラムID BQJ710 として「発行」します。
次回は構文解析のプログラミングについて紹介します。
(つづく)
« プログラミング講座(48) 電卓プログラムの設計 | トップページ | プログラミング講座(50) 字句解析、構文解析 »
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/21203/51069096
この記事へのトラックバック一覧です: プログラミング講座(49) 構文図・EBNF:
« プログラミング講座(48) 電卓プログラムの設計 | トップページ | プログラミング講座(50) 字句解析、構文解析 »







コメント