SCreateTable TableDef(long tb, SCreateTable ctb) { Mustbe(Sym.LPAREN); var cols = ctb.coldefs; var cons = ctb.constraints; for (; ;) { var cd = ColumnDef(tb); cols += (cd.Item2, cols.Length ?? 0); // tb updated with the new column if (cd.Item3 != null) // tableconstraint? { cons = cons.Append(cd.Item3); } switch (lxr.tok) { case Sym.RPAREN: Next(); return(new SCreateTable(ctb.tdef, cols, cons)); case Sym.COMMA: Next(); continue; } throw new Exception("Syntax error"); } }
SCreateTable CreateTable() { Next(); var tb = MustBeID(); var ctb = TableDef(tb, new SCreateTable(tb, SList <SColumn> .Empty, SList <SIndex> .Empty)); while (lxr.tok == Sym.PRIMARY || lxr.tok == Sym.UNIQUE || lxr.tok == Sym.REFERENCES) { var x = TableConstraint(tb); ctb = new SCreateTable(tb, ctb.coldefs, ctb.constraints + x); if (lxr.tok == Sym.COMMA) { Next(); } } return(ctb); }