34 lines
881 B
C#
34 lines
881 B
C#
namespace Parser.Internal
|
|
{
|
|
internal class SyntaxList<T> : SyntaxNode where T : GreenNode
|
|
{
|
|
private readonly SyntaxList _list;
|
|
|
|
protected SyntaxList(T[] list) : base(TokenKind.List)
|
|
{
|
|
Slots = list.Length;
|
|
_list = SyntaxList.List(list);
|
|
foreach (var element in list)
|
|
{
|
|
this.AdjustWidth(element);
|
|
}
|
|
}
|
|
|
|
public override GreenNode GetSlot(int i)
|
|
{
|
|
return (T)_list.GetSlot(i);
|
|
}
|
|
|
|
public static SyntaxList<T> List(T[] elements)
|
|
{
|
|
return new SyntaxList<T>(elements);
|
|
}
|
|
|
|
public override bool IsList => true;
|
|
|
|
internal override Parser.SyntaxNode CreateRed(Parser.SyntaxNode parent)
|
|
{
|
|
return new Parser.SyntaxNodeOrTokenList(parent, this);
|
|
}
|
|
}
|
|
} |