プログラミング講座(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 として「発行」します。
次回は構文解析のプログラミングについて紹介します。
(つづく)
| 固定リンク
「Small Basic」カテゴリの記事
- プログラミング講座 (202) 1次元セルオートマトン(2020.09.20)
- プログラミング講座 (201) パラメーター(2020.09.14)
- プログラミング講座 (200) 3次ベジエ曲線(2020.09.14)
- プログラミング講座 (199) スーパー三角関数?(2020.09.02)
- プログラミング講座 (198) スーパー楕円(2020.09.01)
コメント
あいうえおさん、返事が遅すぎて申し訳ありません。上記のルールの場合、3. や .5 も実数として扱われます。
投稿: たかはしのんき | 2019/02/13 03:17
いきなりのコメント失礼します。
少しお尋ねしたいのですが実数の定義にある0個以上の数字に小数点と1個以上の数字の並びはどういうことなのでしょうか?
.138のように小数点の前に数字がない場合も実数になるのでしょうか?
学校の課題の参考にさせていただきたいので教えていただけるとありがたいです。
投稿: あいうえお | 2015/10/15 01:43
EBNF の表記が BNF になっていたので訂正しました。
投稿: たかはしのんき | 2012/09/15 09:21