sys6.pdf sys.pdf sys-s.pdf 記事一覧 |
![]() <expr> の構文図 |
#65: 構文図
BNF や EBNF の構文は図で表わすと見やすくなります.上図は乗算を加算に優先して計算する式の構文図です.「式とは?」「項の和(や差)」>「項とは?」「因子の積(や商)」>「因子とは?」「数(定数,変数)または式を( )で囲ったもの」--- 式とは何か,と定義を辿っていくと定義の中に式自体が現れます.このような定義は再帰的であるといい,再帰的表現によって定義を簡潔に表現できます.
※ 上図では BNF との対応を分かりやすくするため < > や “ ” で囲っていますが,実際には省略します.
補足:(1) 再帰的な定義でも,スタックを用いることにより再帰のない関数でも処理できます.ただし,このためには再帰から有限回で脱出できる構文になっていることが必要です.上例で言えば「数(定数,変数)または式を( )で囲ったもの」の「数」の方に分岐することで脱出できます.
(2) if-then-else 文でも 「"else if"」の繰返し部分がループになります.構文解析の結果を木で表示できるのは,通常のプログラムでは適当なところで“脱出”しているためです.
[6-1] 記号処理・第 3 回 1 構文図
http://www602.math.ryukoku.ac.jp/~nakano/Compiler/printed/part03.pdf
[6-2] Ⅲ プログラム言語の文法(構文図) -続き-
http://user.numazu-ct.ac.jp/~fujio/personal/jp/kougi/progen/text/3-2.pdf
[6-3] BNF(形式言語)<ハードウェアとソフトウェア<Web教材<木暮仁
http://www.kogures.com/hitoshi/webtext/hs-bnf/index.html
[6-4] 前の問題 - 「情報処理試験.jp」平成15年 秋期 基本情報技術者 問題と ...
http://情報処理試験.jp/FE15b-am/t11.html (ブラウザに貼り付けてください)