━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
再帰下降型の構文解析
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●構文解析手続き

        next_token()    次の字句を読み込む
        error()         誤り処理

●構文解析

*選択

        字句A | 字句B

                        if (tok が字句A) {
                            Aの処理
                            tok = next_token();
                        } else if (tok が字句B) {
                            Bの処理
                            tok = next_token();
                        } else {
                            error();
                        }

        字句A | 変数X

                        if (tok が字句A) {
                            Aの処理
                            tok = next_token();
                        } else {
                            Xの処理手続きの呼び出し
                        }

*反復

        変数X*  字句A

                        while (! tok が字句A) {
                            Xの処理手続きの呼び出し
                        }
                        Aの処理
                        tok = next_token();

        ※字句Aは入力終端の場合もある

●まとめ

        先読み
        ・必ず1字句先読みして各構文解析手続きを呼ぶ
        ・1字句照合したら next_token() を呼ぶ

        文法の構造に応じた処理
        ・選択には選択文
        ・反復には反復文
        ・変数(左辺の記号)の処理には構文解析手続きの呼び出し

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
実験のホームページ

山田 俊行
https://www.cs.info.mie-u.ac.jp/~toshi/