« プログラミング講座(48) 電卓プログラムの設計 | トップページ | プログラミング講座(50) 字句解析、構文解析 »

プログラミング講座(49) 構文図・EBNF

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

Expression
【図46 式の構成】

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

Basic_syntax_diagram
【図47 四則演算式の構文図】

この構文図を文字で書き表したものがEBNFです。以下のようになります。

 <数字>::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
 <整数>::={<加減演算子>}<数字>{<数字>}
 <実数>::={<加減演算子>}(<数字>{<数字>}"."{<数字>}|{<数字>}"."<数字>{<数字>})
 <加減演算子>::="+"|"-"
 <乗除演算子>::="*"|"/"
 <数>::=<整数>|<実数>
 <項>::=<数>{<乗除演算子><数>}
 <式>::=<項>{<加減演算子><項>}

このように文法を明確にすることで、この関係がそのまま構文解析プログラムの形になります。

一方プログラミングのほうは電卓の主なデザインを済ませたので、プログラムID BQJ710 として「発行」します。

Ca01a
【図48 電卓プログラムのデザイン】

次回は構文解析のプログラミングについて紹介します。

(つづく)

« プログラミング講座(48) 電卓プログラムの設計 | トップページ | プログラミング講座(50) 字句解析、構文解析 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/21203/51069096

この記事へのトラックバック一覧です: プログラミング講座(49) 構文図・EBNF:

« プログラミング講座(48) 電卓プログラムの設計 | トップページ | プログラミング講座(50) 字句解析、構文解析 »

フォト

つぶやき

無料ブログはココログ

ウェブ検索

  • 毎日の検索で環境貢献
    このパーツから
    Powered by

最近のトラックバック