Files
Upsilon/Upsilon/Parser/ExpressionSyntax/FunctionExpressionSyntax.cs

41 lines
1.4 KiB
C#

using System.Collections.Generic;
using System.Collections.Immutable;
namespace Upsilon.Parser
{
public class FunctionExpressionSyntax : ExpressionSyntax
{
public SyntaxToken FunctionToken { get; }
public SyntaxToken OpenParenthesis { get; }
public ImmutableArray<IdentifierToken> Parameters { get; }
public SyntaxToken CloseParenthesis { get; }
public BlockStatementSyntax Block { get; }
public SyntaxToken EndToken { get; }
public FunctionExpressionSyntax(SyntaxToken functionToken,
SyntaxToken openParenthesis, ImmutableArray<IdentifierToken> parameters, SyntaxToken closeParenthesis,
BlockStatementSyntax block, SyntaxToken endToken)
{
FunctionToken = functionToken;
OpenParenthesis = openParenthesis;
Parameters = parameters;
CloseParenthesis = closeParenthesis;
Block = block;
EndToken = endToken;
}
public override SyntaxKind Kind => SyntaxKind.FunctionExpression;
public override IEnumerable<SyntaxNode> ChildNodes()
{
yield return FunctionToken;
yield return OpenParenthesis;
foreach (var identifierToken in Parameters)
{
yield return identifierToken;
}
yield return CloseParenthesis;
yield return Block;
yield return EndToken;
}
}
}