using System.Collections.Generic; using System.Collections.Immutable; using Upsilon.Text; namespace Upsilon.Parser { public class FunctionCallExpressionSyntax : ExpressionSyntax { public ExpressionSyntax Identifier { get; } public SyntaxToken OpenParenthesis { get; } public ImmutableArray Parameters { get; } public SyntaxToken CloseParenthesis { get; } public FunctionCallExpressionSyntax(ExpressionSyntax identifier, SyntaxToken openParenthesis, ImmutableArray parameters, SyntaxToken closeParenthesis) { Identifier = identifier; OpenParenthesis = openParenthesis; Parameters = parameters; CloseParenthesis = closeParenthesis; Span = TextSpan.Between(Identifier.Span, CloseParenthesis.Span); } public override SyntaxKind Kind => SyntaxKind.FunctionCallExpression; public override IEnumerable ChildNodes() { yield return Identifier; yield return OpenParenthesis; foreach (var expressionSyntax in Parameters) { yield return expressionSyntax; } yield return CloseParenthesis; } } }