public IExpression Parse(TextSpan token, IParser parser) { var tokenStr = parser.Scanner.GetSpanString(token); var variableExpr = new VariableSqlCodeExpr { Name = tokenStr }; if (parser.MatchToken(SqlToken.Dot)) { var nodesExpr = parser.PrefixParse(SqlToken.NODES) as SqlCodeExpr; parser.ConsumeToken(SqlToken.As); var aliasName = parser.ConsumeObjectId(); parser.ConsumeToken(SqlToken.LParen); var columnName = parser.ConsumeObjectId(); parser.ConsumeToken(SqlToken.RParen); return(new VariableNodesSqlCodeExpr { Variable = variableExpr, NodesExpr = nodesExpr, AliasName = aliasName, ColumnName = columnName }); } return(variableExpr); }
private IExpression SetVariable(TextSpan variableSpan, IParser parser) { var variableExpr = new VariableSqlCodeExpr { Name = parser.Scanner.GetSpanString(variableSpan), }; var oper = parser.Scanner.ConsumeStringAny(SqlToken.Equal, SqlToken.PlusEqual); var valueExpr = parser.ParseExp() as SqlCodeExpr; valueExpr = parser.ParseLRParenExpr(valueExpr); return(new SetVariableSqlCodeExpr { Name = variableExpr, Oper = oper, Value = valueExpr }); }