public ValueNode VisitValue(DazelParser.ValueContext context) { if (context.array() != null) { return(VisitArray(context.array())); } if (context.memberAccess() != null) { return(VisitMemberAccess(context.memberAccess())); } if (context.functionInvocation() != null) { return(VisitFunctionInvocation(context.functionInvocation()).Function.ValueNode); } switch (context.terminalValue.Type) { case DazelLexer.IDENTIFIER: return(new IdentifierValueNode { Token = context.Start, Identifier = context.GetText() }); case DazelLexer.INT: return(new IntValueNode { Token = context.Start, Value = int.Parse(context.GetText()) }); case DazelLexer.FLOAT: return(new FloatValueNode { Token = context.Start, Value = float.Parse(context.GetText()) }); case DazelLexer.STRING: return(new StringNode { Token = context.Start, Value = context.GetText().Replace("\"", string.Empty) }); default: throw new ArgumentException("Invalid value passed."); } }
/// <summary> /// Exit a parse tree produced by <see cref="DazelParser.value"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitValue([NotNull] DazelParser.ValueContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="DazelParser.value"/>. /// <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 VisitValue([NotNull] DazelParser.ValueContext context) { return(VisitChildren(context)); }