| 課題1 | 上記のパーサーの正規表現を少し変えると, 非負の少数を切り出すパーサーをつくることができる. つくったパーサーが正しく動作する (つまり,非負少数は正しく切り出せるが, 非負少数でないものを与えると失敗してundefinedを返す) ことを適切なテスト例を用いて示せ. |
||
| 作成上の注意 | 作成したパーサーの定義と説明およびテスト結果 | ||
| 課題2 | 上記のパーサーpに正しくない入力を与えると ちゃんと解析に失敗してundefinedを返すことを, 適切なテスト例を用いて示せ. |
||
| 作成上の注意 | テスト結果 | ||
| 課題3 | termとexprのアクションとして、 evalExprの代わりに適当な関数を設定して数式を読み込むと、 括弧を補った数式が出力されるようにせよ。 |
||
| before | after | ||
| 1+2*3 1-2-3-4 1-(2-3)-4 |
(1+(2*3)) (((1-2)-3)-4) (((1-(2-3))-4) | ||
| 作成上の注意 | 作成したアクション関数の定義と説明およびテスト結果 | ||
| 課題4 | 式の文法を拡張して以下の演算子をサポートせよ | 変更後のパーサーとアクション関数の定義 (変更部分を明示せよ)と説明およびそのテスト結果 |
|
| 拡張する演算子 | %,<=,>=,!= | ||
| 作成上の注意 | |||
| 課題5 | C言語風のdo-while文をサポートするように プログラムを拡張せよ (do-while文のパーサーとアクション関数をつくり追加せよ)。 |
||
| 作成上の注意 | do-while文の処理を追加した後のパーサー (変更部分を明示せよ) とアクション関数の定義、説明およびそのテスト結果 |