private Declarator parseFormalType(SymbolTable tbl) throws CompileError { int t = lex.lookAhead(); if (isBuiltinType(t) || t == VOID) { lex.get(); // primitive type int dim = parseArrayDimension(); return new Declarator(t, dim); } else { ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return new Declarator(name, dim); } }
private ASTree parseInstanceOf(SymbolTable tbl, ASTree expr) throws CompileError { int t = lex.lookAhead(); if (isBuiltinType(t)) { lex.get(); // primitive type int dim = parseArrayDimension(); return new InstanceOfExpr(t, dim, expr); } else { ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return new InstanceOfExpr(name, dim, expr); } }
private Declarator parseFormalType(SymbolTable tbl) throws CompileError { int t = lex.lookAhead(); if (isBuiltinType(t) || t == VOID) { lex.get(); // primitive type int dim = parseArrayDimension(); return new Declarator(t, dim); } ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return new Declarator(name, dim); }
private ASTree parseInstanceOf(SymbolTable tbl, ASTree expr) throws CompileError { int t = lex.lookAhead(); if (isBuiltinType(t)) { lex.get(); // primitive type int dim = parseArrayDimension(); return new InstanceOfExpr(t, dim, expr); } ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return new InstanceOfExpr(name, dim, expr); }
private Declarator parseFormalParam(SymbolTable tbl) throws CompileError { Declarator d = parseFormalType(tbl); if (lex.get() != Identifier) throw new SyntaxError(lex); String name = lex.getString(); d.setVariable(new Symbol(name)); d.addArrayDim(parseArrayDimension()); tbl.append(name, d); return d; }
private Declarator parseFormalParam(SymbolTable tbl) throws CompileError { Declarator d = parseFormalType(tbl); if (lex.get() != Identifier) throw new SyntaxError(lex); String name = lex.getString(); d.setVariable(new Symbol(name)); d.addArrayDim(parseArrayDimension()); tbl.append(name, d); return d; }
private ASTree parseCast(SymbolTable tbl) throws CompileError { int t = lex.lookAhead(1); if (isBuiltinType(t) && nextIsBuiltinCast()) { lex.get(); // '(' lex.get(); // primitive type int dim = parseArrayDimension(); if (lex.get() != ')') throw new CompileError(") is missing", lex); return new CastExpr(t, dim, parseUnaryExpr(tbl)); } else if (t == Identifier && nextIsClassCast()) { lex.get(); // '(' ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); if (lex.get() != ')') throw new CompileError(") is missing", lex); return new CastExpr(name, dim, parseUnaryExpr(tbl)); } else return parsePostfix(tbl); }
private Declarator parseDeclarator(SymbolTable tbl, Declarator d) throws CompileError { if (lex.get() != Identifier || d.getType() == VOID) throw new SyntaxError(lex); String name = lex.getString(); Symbol symbol = new Symbol(name); int dim = parseArrayDimension(); ASTree init = null; if (lex.lookAhead() == '=') { lex.get(); init = parseInitializer(tbl); } Declarator decl = d.make(symbol, dim, init); tbl.append(name, decl); return decl; }
int dim = parseArrayDimension(); return parseDeclarators(tbl, new Declarator(t, dim)); if (lex.lookAhead(i) == Identifier) { ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return parseDeclarators(tbl, new Declarator(name, dim));
private ASTree parseCast(SymbolTable tbl) throws CompileError { int t = lex.lookAhead(1); if (isBuiltinType(t) && nextIsBuiltinCast()) { lex.get(); // '(' lex.get(); // primitive type int dim = parseArrayDimension(); if (lex.get() != ')') throw new CompileError(") is missing", lex); return new CastExpr(t, dim, parseUnaryExpr(tbl)); } else if (t == Identifier && nextIsClassCast()) { lex.get(); // '(' ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); if (lex.get() != ')') throw new CompileError(") is missing", lex); return new CastExpr(name, dim, parseUnaryExpr(tbl)); } else return parsePostfix(tbl); }
private Declarator parseDeclarator(SymbolTable tbl, Declarator d) throws CompileError { if (lex.get() != Identifier || d.getType() == VOID) throw new SyntaxError(lex); String name = lex.getString(); Symbol symbol = new Symbol(name); int dim = parseArrayDimension(); ASTree init = null; if (lex.lookAhead() == '=') { lex.get(); init = parseInitializer(tbl); } Declarator decl = d.make(symbol, dim, init); tbl.append(name, decl); return decl; }
int dim = parseArrayDimension(); return parseDeclarators(tbl, new Declarator(t, dim)); if (lex.lookAhead(i) == Identifier) { ASTList name = parseClassType(tbl); int dim = parseArrayDimension(); return parseDeclarators(tbl, new Declarator(name, dim));
default : if (isBuiltinType(t) || t == VOID) { int dim = parseArrayDimension(); if (lex.get() == '.' && lex.get() == CLASS) return parseDotClass(t, dim);
d.addArrayDim(parseArrayDimension()); if (isConstructor && d.getArrayDim() > 0) throw new SyntaxError(lex);
default : if (isBuiltinType(t) || t == VOID) { int dim = parseArrayDimension(); if (lex.get() == '.' && lex.get() == CLASS) return parseDotClass(t, dim);
d.addArrayDim(parseArrayDimension()); if (isConstructor && d.getArrayDim() > 0) throw new SyntaxError(lex);
case '[' : if (lex.lookAhead(1) == ']') { int dim = parseArrayDimension(); if (lex.get() != '.' || lex.get() != CLASS) throw new SyntaxError(lex);
case '[' : if (lex.lookAhead(1) == ']') { int dim = parseArrayDimension(); if (lex.get() != '.' || lex.get() != CLASS) throw new SyntaxError(lex);
private Declarator parseFormalParam(SymbolTable tbl) throws CompileError { Declarator d = parseFormalType(tbl); if (lex.get() != Identifier) throw new SyntaxError(lex); String name = lex.getString(); d.setVariable(new Symbol(name)); d.addArrayDim(parseArrayDimension()); tbl.append(name, d); return d; }
private Declarator parseFormalParam(SymbolTable tbl) throws CompileError { Declarator d = parseFormalType(tbl); if (lex.get() != Identifier) throw new SyntaxError(lex); String name = lex.getString(); d.setVariable(new Symbol(name)); d.addArrayDim(parseArrayDimension()); tbl.append(name, d); return d; }