void Stmt(out Statement stmt)
{
Expression exp = null;
stmt = null;
int sl = la.line, sc = la.col;
StatementSequence stmtSeq;
Token bf;
switch (la.kind) {
case 1: {
AssignStmt(out stmt);
stmt.AddSequencePoint(sl,sc, t.line,t.col+t.val.Length);
break;
}
case 13: {
Get();
stmt = new Skip();stmt.AddSequencePoint(t);
break;
}
case 3: {
BlockStmt(out stmt);
break;
}
case 18: {
IfStmt(out stmt);
break;
}
case 22: {
WhileStmt(out stmt);
break;
}
case 15: {
ReadStmt(out stmt);
stmt.AddSequencePoint(sl,sc, t.line,t.col+t.val.Length);
break;
}
case 14: {
Get();
Expr(out exp);
stmt = new Write(exp); stmt.AddSequencePoint(sl,sc, t.line,t.col+t.val.Length);
break;
}
case 25: {
CallProc(out stmt);
stmt.AddSequencePoint(sl,sc, t.line,t.col+t.val.Length);
break;
}
case 6: {
Get();
bf = t;
StmtSeq(out stmtSeq);
Expect(9);
stmt = stmtSeq;
stmt.AddSequencePoint(bf);
stmt.AddSequencePoint(t);
break;
}
default: SynErr(52); break;
}
}