void decl_stmt(VarList curtree) { VarList vars = new VarList(); io.Message(tok+"[DECLARE]"); tok.scan(); switch (tok.getId()) { case Tok.TOK_1_LBRACKET: param(vars); break; case Tok.TOK_IDENT: simple_var(vars); break; case Tok.TOK_DIGITS: break; } if (tok.getId() == Tok.TOK_1_LBRACKET) { io.Message(tok+"[(]"); tok.scan(); if (tok.getId() != Tok.TOK_DIGITS) io.Abort("PL0113: constant expected"); io.Message(tok+"[Constant]"); vars.setNodesGranularity(System.Convert.ToInt32(tok.getValue())); tok.scan(); if (tok.getId() != Tok.TOK_1_RBRACKET) io.Abort("PL0114: ')' expected"); io.Message(tok+"[)]"); tok.scan(); } switch (tok.getId()) { case Tok.TOK_FIXED: case Tok.TOK_FLOAT: case Tok.TOK_COMPLEX: case Tok.TOK_REAL: case Tok.TOK_BINARY: case Tok.TOK_DECIMAL: vars.setNodesType(Var.VAR_LOCAL); vars.setNodesTypeId(tok.getId()); try { curtree.mergeNodes(vars); } catch { io.Abort("PL0107: invalid variable declaration"); } io.Message(tok+"[Type]"); tok.scan(); break; default: io.Abort("PL0115: type specifier expected"); break; } }
void decl_stmt(VarList curtree) { VarList vars = new VarList(); io.Message(tok + "[DECLARE]"); tok.scan(); switch (tok.getId()) { case Tok.TOK_1_LBRACKET: param(vars); break; case Tok.TOK_IDENT: simple_var(vars); break; case Tok.TOK_DIGITS: break; } if (tok.getId() == Tok.TOK_1_LBRACKET) { io.Message(tok + "[(]"); tok.scan(); if (tok.getId() != Tok.TOK_DIGITS) { io.Abort("PL0113: constant expected"); } io.Message(tok + "[Constant]"); vars.setNodesGranularity(System.Convert.ToInt32(tok.getValue())); tok.scan(); if (tok.getId() != Tok.TOK_1_RBRACKET) { io.Abort("PL0114: ')' expected"); } io.Message(tok + "[)]"); tok.scan(); } switch (tok.getId()) { case Tok.TOK_FIXED: case Tok.TOK_FLOAT: case Tok.TOK_COMPLEX: case Tok.TOK_REAL: case Tok.TOK_BINARY: case Tok.TOK_DECIMAL: vars.setNodesType(Var.VAR_LOCAL); vars.setNodesTypeId(tok.getId()); try { curtree.mergeNodes(vars); } catch { io.Abort("PL0107: invalid variable declaration"); } io.Message(tok + "[Type]"); tok.scan(); break; default: io.Abort("PL0115: type specifier expected"); break; } }