学籍番号 学年 年 氏名 第 5 章 制約検査 (5/30〆切) レポート課題 1. 以下の式で左辺値を持つものを全て選べ (1) abc (2) main (3) a+b (4) x12 (7) a[12] (8) a[12+24] (9) a[12]+b[24] (10) (a) (5) (11) main12 (6) -b a [b*c] (12) ++i 2. 以下に示す制約検査プログラム(の一部)の、空欄(1)~(7)に当てはまる命令を記入せよ。 ただし、Token 型変数 token には現在解析中のトークン、VarTable 型変数 varTable に は変数表が入っているとし、NAME, INTEGER はそれぞれ変数名, 整数を表す終端記号 とする。また、式の解析では左辺値の有無を返り値として返すとする。 (ア) <Decl> ::= “int” NAME “;” void parseDecl() { if (token.checkSymbol (Symbol.INT)) token = nextToken(); else syntaxError(); if (token.checkSymbol (Symbol.NAME)) { String name = (1) ; token = nextToken(); } else syntaxError(); if ((2) ) syntaxError(“二重登録”); varTable.addElement ((3) ); if (token.checkSymbol (Symbol.SEMICOLON) token = nextToken(); else syntaxError(); } (イ) <Unsigned> ::= NAME | INTEGER boolean parseUnsigned() { if (token.checkSymbol (Symbol.NAME)) { String name = token.getStrValue(); token = nextToken(); if ((4) q1 else if ((5) a,b,...,z A,B,...,Z return (6) } else if (token.checkSymbol (Symbol.INTEGER)) { q0 q2 a,b,...,z a,b,...,z token = nextToken(); return (7) } else syntaxError(); } ) syntaxError(“未定義”); ) syntaxError(“型不一致”); ; ;
© Copyright 2024 ExpyDoc