public override SqlObject VisitLiteralScalarExpression(AntlrSqlParser.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 AntlrSqlParser.STRING_LITERAL: string value = CstToAstVisitor.GetStringValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlStringLiteral.Create(value)); break; case AntlrSqlParser.NUMERIC_LITERAL: Number64 number64 = CstToAstVisitor.GetNumber64ValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(number64)); break; case AntlrSqlParser.K_TRUE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(true)); break; case AntlrSqlParser.K_FALSE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(false)); break; case AntlrSqlParser.K_NULL: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNullLiteral.Create()); break; case AntlrSqlParser.K_UNDEFINED: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlUndefinedLiteral.Create()); break; default: throw new ArgumentOutOfRangeException($"Unknown symbol type: {terminalNode.Symbol.Type}"); } return(sqlLiteralScalarExpression); }
/// <summary> /// Visit a parse tree produced by the <c>LiteralScalarExpression</c> /// labeled alternative in <see cref="AntlrSqlParser.scalar_expression"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitLiteralScalarExpression([NotNull] AntlrSqlParser.LiteralScalarExpressionContext context) { return(VisitChildren(context)); }