public override SqlObject VisitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context) { Contract.Requires(context != null); SqlPathExpression pathExpression = (SqlPathExpression)this.Visit(context.path_expression()); SqlStringLiteral stringIndex = SqlStringLiteral.Create(CstToAstVisitor.GetStringValueFromNode(context.STRING_LITERAL())); return(SqlStringPathExpression.Create(pathExpression, stringIndex)); }
public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) { Contract.Requires(context != null); SqlScalarExpression expression = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[0]); SqlScalarExpression pattern = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[1]); bool not = context.K_NOT() != null; SqlStringLiteral escapeSequence = (context.escape_expression() != null) ? SqlStringLiteral.Create(CstToAstVisitor.GetStringValueFromNode(context.escape_expression().STRING_LITERAL())) : null; return(SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence)); }
public override SqlObject VisitObject_property([NotNull] sqlParser.Object_propertyContext context) { Contract.Requires(context != null); Contract.Requires(context.STRING_LITERAL() != null); Contract.Requires(context.scalar_expression() != null); string name = CstToAstVisitor.GetStringValueFromNode(context.STRING_LITERAL()); SqlScalarExpression value = (SqlScalarExpression)this.Visit(context.scalar_expression()); SqlObjectProperty property = SqlObjectProperty.Create( SqlPropertyName.Create(name), value); return(property); }
public override SqlObject VisitLiteralScalarExpression(sqlParser.LiteralScalarExpressionContext context) { Contract.Requires(context != null); Contract.Requires(context.ChildCount == 1); Contract.Requires(context.children[0].ChildCount == 1); TerminalNodeImpl terminalNode = (TerminalNodeImpl)context.children[0].GetChild(0); SqlLiteralScalarExpression sqlLiteralScalarExpression; switch (terminalNode.Symbol.Type) { case sqlParser.STRING_LITERAL: string value = CstToAstVisitor.GetStringValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlStringLiteral.Create(value)); break; case sqlParser.NUMERIC_LITERAL: Number64 number64 = CstToAstVisitor.GetNumber64ValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(number64)); break; case sqlParser.K_TRUE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(true)); break; case sqlParser.K_FALSE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(false)); break; case sqlParser.K_NULL: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNullLiteral.Create()); break; case sqlParser.K_UNDEFINED: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlUndefinedLiteral.Create()); break; default: throw new ArgumentOutOfRangeException($"Unknown symbol type: {terminalNode.Symbol.Type}"); } return(sqlLiteralScalarExpression); }
public override SqlObject VisitLiteral([NotNull] sqlParser.LiteralContext context) { TerminalNodeImpl terminalNode = (TerminalNodeImpl)context.children[0]; SqlLiteral sqlLiteral; switch (terminalNode.Symbol.Type) { case sqlParser.STRING_LITERAL: string value = CstToAstVisitor.GetStringValueFromNode(terminalNode); sqlLiteral = SqlStringLiteral.Create(value); break; case sqlParser.NUMERIC_LITERAL: Number64 number64 = CstToAstVisitor.GetNumber64ValueFromNode(terminalNode); sqlLiteral = SqlNumberLiteral.Create(number64); break; case sqlParser.K_TRUE: sqlLiteral = SqlBooleanLiteral.Create(true); break; case sqlParser.K_FALSE: sqlLiteral = SqlBooleanLiteral.Create(false); break; case sqlParser.K_NULL: sqlLiteral = SqlNullLiteral.Create(); break; case sqlParser.K_UNDEFINED: sqlLiteral = SqlUndefinedLiteral.Create(); break; default: throw new ArgumentOutOfRangeException($"Unknown symbol type: {terminalNode.Symbol.Type}"); } return(sqlLiteral); }
public override SqlObject VisitObjectCreateScalarExpression(sqlParser.ObjectCreateScalarExpressionContext context) { Contract.Requires(context != null); // '{' object_propertty_list? '}' List <SqlObjectProperty> properties = new List <SqlObjectProperty>(); if (context.object_propertty_list() != null) { sqlParser.Object_propertyContext[] propertyContexts = context.object_propertty_list().object_property(); foreach (sqlParser.Object_propertyContext objectPropertyContext in propertyContexts) { string name = CstToAstVisitor.GetStringValueFromNode(objectPropertyContext.STRING_LITERAL()); SqlScalarExpression value = (SqlScalarExpression)this.Visit(objectPropertyContext.scalar_expression()); SqlObjectProperty property = SqlObjectProperty.Create( SqlPropertyName.Create(name), value); properties.Add(property); } } return(SqlObjectCreateScalarExpression.Create(properties)); }