55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using Upsilon.Text;
|
|
|
|
namespace Upsilon.Parser
|
|
{
|
|
public class IndexExpressionSyntax : ExpressionSyntax
|
|
{
|
|
public ExpressionSyntax Expression { get; }
|
|
public SyntaxToken OpenBracket { get; }
|
|
public ExpressionSyntax Index { get; }
|
|
public SyntaxToken CloseBracket { get; }
|
|
|
|
public IndexExpressionSyntax(ExpressionSyntax expression, SyntaxToken openBracket, ExpressionSyntax index,
|
|
SyntaxToken closeBracket)
|
|
{
|
|
Expression = expression;
|
|
OpenBracket = openBracket;
|
|
Index = index;
|
|
CloseBracket = closeBracket;
|
|
Span = TextSpan.Between(expression.Span, closeBracket.Span);
|
|
}
|
|
|
|
public override SyntaxKind Kind => SyntaxKind.IndexExpression;
|
|
public override IEnumerable<SyntaxNode> ChildNodes()
|
|
{
|
|
yield return Expression;
|
|
yield return OpenBracket;
|
|
yield return Index;
|
|
yield return CloseBracket;
|
|
}
|
|
}
|
|
|
|
public class FullStopIndexExpressionSyntax : ExpressionSyntax
|
|
{
|
|
public ExpressionSyntax Expression { get; }
|
|
public SyntaxToken FullStop { get; }
|
|
public IdentifierToken Index { get; }
|
|
|
|
public FullStopIndexExpressionSyntax(ExpressionSyntax expression, SyntaxToken fullStop, IdentifierToken index)
|
|
{
|
|
Expression = expression;
|
|
FullStop = fullStop;
|
|
Index = index;
|
|
Span = TextSpan.Between(expression.Span, Index.Span);
|
|
}
|
|
|
|
public override SyntaxKind Kind => SyntaxKind.FullStopIndexExpression;
|
|
public override IEnumerable<SyntaxNode> ChildNodes()
|
|
{
|
|
yield return Expression;
|
|
yield return FullStop;
|
|
yield return Index;
|
|
}
|
|
}
|
|
} |