protected override SyntaxToken VisitFunction(FunctionSyntaxToken token) { SyntaxToken[] arguments = token.Arguments.Select(this.Visit).ToArray(); if (arguments.All(t => t.TokenType == SyntaxTokenType.Constant)) { return this.EvalFunction(arguments.Cast<ConstantSyntaxToken>().ToArray(), token.Type); } return SyntaxToken.Function(token.Type, arguments); }