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

2011/03/08

プログラミング講座(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) 字句解析、構文解析 »

Small Basic」カテゴリの記事

コメント

あいうえおさん、返事が遅すぎて申し訳ありません。上記のルールの場合、3. や .5 も実数として扱われます。

投稿: たかはしのんき | 2019/02/13 03:17

いきなりのコメント失礼します。
少しお尋ねしたいのですが実数の定義にある0個以上の数字に小数点と1個以上の数字の並びはどういうことなのでしょうか?
.138のように小数点の前に数字がない場合も実数になるのでしょうか?
学校の課題の参考にさせていただきたいので教えていただけるとありがたいです。

投稿: あいうえお | 2015/10/15 01:43

EBNF の表記が BNF になっていたので訂正しました。

投稿: たかはしのんき | 2012/09/15 09:21

コメントを書く



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




トラックバック


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

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