41 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
} |