public TableInfo GenerateDDLInfo() { var tableinfo = new TableInfo(); var result = Tokenize(script, Mssql.Status.BASE_INIT, 0); Console.WriteLine("base \ttoken \t value \t pid"); foreach (var tokenize in result) { Console.WriteLine(tokenize.Status + "\t" + tokenize.TokenType + " \t " + tokenize.Text.ToString() + "\t" + tokenize.Pid); } tableinfo.TableName = result.First(x => x.TokenType == TokenType.TBN).NodeText; foreach (var item in result.GroupBy(x => x.Pid)) { if (item.Any(x => x.TokenType == TokenType.FI) && item.Any(x => x.TokenType == TokenType.FIELD_NAME) && item.Any(x => x.TokenType == TokenType.FIELD_TYPE)) { var name = item.First(x => x.TokenType == TokenType.FIELD_NAME).NodeText; tableinfo.AddCol(name, item.First(x => x.TokenType == TokenType.FIELD_TYPE).NodeText, item.FirstOrDefault(x => x.TokenType == TokenType.FIELD_NULL)?.NodeText == "NULL", result.Any(x => x.NodeText == name && x.TokenType == TokenType.K) ); } } return(tableinfo); }