Unpack identifier name syntax where appropriate

This commit is contained in:
Alexander Luzgarev 2020-07-14 14:47:15 +02:00
parent e1a7ea36c9
commit df0cd4dea3
7 changed files with 50 additions and 58 deletions

View File

@ -118,7 +118,7 @@ namespace ProjectConsole
OutputKeyword(node.ClassdefKeyword); OutputKeyword(node.ClassdefKeyword);
Visit(node.Attributes); Visit(node.Attributes);
BoldOn(); BoldOn();
Visit(node.ClassName); OutputIdentifier(node.ClassName);
BoldOff(); BoldOff();
Visit(node.BaseClassList); Visit(node.BaseClassList);
Visit(node.Nodes); Visit(node.Nodes);
@ -355,7 +355,7 @@ namespace ProjectConsole
public override void VisitCommandExpression(CommandExpressionSyntaxNode node) public override void VisitCommandExpression(CommandExpressionSyntaxNode node)
{ {
Visit(node.CommandName); OutputIdentifier(node.CommandName);
Visit(node.Arguments); Visit(node.Arguments);
} }
@ -391,7 +391,7 @@ namespace ProjectConsole
public override void VisitAttribute(AttributeSyntaxNode node) public override void VisitAttribute(AttributeSyntaxNode node)
{ {
Visit(node.Name); OutputIdentifier(node.Name);
Visit(node.Assignment); Visit(node.Assignment);
} }
@ -454,7 +454,7 @@ namespace ProjectConsole
public override void VisitEnumerationItem(EnumerationItemSyntaxNode node) public override void VisitEnumerationItem(EnumerationItemSyntaxNode node)
{ {
Visit(node.Name); OutputIdentifier(node.Name);
Visit(node.Values); Visit(node.Values);
Visit(node.Commas); Visit(node.Commas);
} }

View File

@ -89,7 +89,7 @@ namespace MApplication
{ {
AddToken(node.ClassdefKeyword, _scheme.Keyword); AddToken(node.ClassdefKeyword, _scheme.Keyword);
Visit(node.Attributes); Visit(node.Attributes);
Visit(node.ClassName); AddToken(node.ClassName, _scheme.Identifier);
Visit(node.BaseClassList); Visit(node.BaseClassList);
Visit(node.Nodes); Visit(node.Nodes);
AddToken(node.EndKeyword, _scheme.Keyword); AddToken(node.EndKeyword, _scheme.Keyword);
@ -302,7 +302,7 @@ namespace MApplication
public override void VisitCommandExpression(CommandExpressionSyntaxNode node) public override void VisitCommandExpression(CommandExpressionSyntaxNode node)
{ {
Visit(node.CommandName); AddToken(node.CommandName, _scheme.Identifier);
Visit(node.Arguments); Visit(node.Arguments);
} }
@ -338,7 +338,7 @@ namespace MApplication
public override void VisitAttribute(AttributeSyntaxNode node) public override void VisitAttribute(AttributeSyntaxNode node)
{ {
Visit(node.Name); AddToken(node.Name, _scheme.Identifier);
Visit(node.Assignment); Visit(node.Assignment);
} }
@ -401,7 +401,7 @@ namespace MApplication
public override void VisitEnumerationItem(EnumerationItemSyntaxNode node) public override void VisitEnumerationItem(EnumerationItemSyntaxNode node)
{ {
Visit(node.Name); AddToken(node.Name, _scheme.Identifier);
Visit(node.Values); Visit(node.Values);
Visit(node.Commas); Visit(node.Commas);
} }

View File

@ -422,7 +422,7 @@ namespace Parser.Internal
builder.Add(Factory.UnquotedStringLiteralSyntax(EatToken())); builder.Add(Factory.UnquotedStringLiteralSyntax(EatToken()));
} }
return Factory.CommandExpressionSyntax(idNameNode, builder.ToList()); return Factory.CommandExpressionSyntax(idNameNode._name, builder.ToList());
} }
if (expression is null) if (expression is null)
@ -866,7 +866,7 @@ namespace Parser.Internal
private AttributeSyntaxNode ParseAttribute() private AttributeSyntaxNode ParseAttribute()
{ {
var name = Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)); var name = EatToken(TokenKind.IdentifierToken);
var assignment = ParseAttributeAssignment(); var assignment = ParseAttributeAssignment();
return Factory.AttributeSyntax(name, assignment); return Factory.AttributeSyntax(name, assignment);
} }
@ -1023,7 +1023,7 @@ namespace Parser.Internal
private EnumerationItemSyntaxNode ParseEnumerationItem() private EnumerationItemSyntaxNode ParseEnumerationItem()
{ {
var name = Factory.IdentifierNameExpressionSyntax(EatToken()); var name = EatToken();
var values = ParseEnumerationValue(); var values = ParseEnumerationValue();
var commas = ParseOptionalCommas(); var commas = ParseOptionalCommas();
return Factory.EnumerationItemSyntax(name, values, commas); return Factory.EnumerationItemSyntax(name, values, commas);
@ -1104,7 +1104,7 @@ namespace Parser.Internal
{ {
attributes = ParseAttributesList(); attributes = ParseAttributesList();
} }
var className = Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)); var className = EatToken(TokenKind.IdentifierToken);
BaseClassListSyntaxNode? baseClassList = null; BaseClassListSyntaxNode? baseClassList = null;
if (CurrentToken.Kind == TokenKind.LessToken) if (CurrentToken.Kind == TokenKind.LessToken)
{ {

View File

@ -178,7 +178,7 @@ namespace Parser.Internal
return new IndirectMemberAccessSyntaxNode(openingBracket, expression, closingBracket); return new IndirectMemberAccessSyntaxNode(openingBracket, expression, closingBracket);
} }
public CommandExpressionSyntaxNode CommandExpressionSyntax(IdentifierNameExpressionSyntaxNode commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments) public CommandExpressionSyntaxNode CommandExpressionSyntax(SyntaxToken commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments)
{ {
return new CommandExpressionSyntaxNode(commandName, arguments); return new CommandExpressionSyntaxNode(commandName, arguments);
} }
@ -193,7 +193,7 @@ namespace Parser.Internal
return new AttributeAssignmentSyntaxNode(assignmentSign, value); return new AttributeAssignmentSyntaxNode(assignmentSign, value);
} }
public AttributeSyntaxNode AttributeSyntax(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment) public AttributeSyntaxNode AttributeSyntax(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment)
{ {
return new AttributeSyntaxNode(name, assignment); return new AttributeSyntaxNode(name, assignment);
} }
@ -228,7 +228,7 @@ namespace Parser.Internal
return new BaseClassListSyntaxNode(lessSign, baseClasses); return new BaseClassListSyntaxNode(lessSign, baseClasses);
} }
public ClassDeclarationSyntaxNode ClassDeclarationSyntax(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword) public ClassDeclarationSyntaxNode ClassDeclarationSyntax(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword)
{ {
return new ClassDeclarationSyntaxNode(classdefKeyword, attributes, className, baseClassList, nodes, endKeyword); return new ClassDeclarationSyntaxNode(classdefKeyword, attributes, className, baseClassList, nodes, endKeyword);
} }
@ -238,7 +238,7 @@ namespace Parser.Internal
return new EnumerationItemValueSyntaxNode(openingBracket, values, closingBracket); return new EnumerationItemValueSyntaxNode(openingBracket, values, closingBracket);
} }
public EnumerationItemSyntaxNode EnumerationItemSyntax(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas) public EnumerationItemSyntaxNode EnumerationItemSyntax(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas)
{ {
return new EnumerationItemSyntaxNode(name, values, commas); return new EnumerationItemSyntaxNode(name, values, commas);
} }

View File

@ -1648,9 +1648,9 @@ namespace Parser.Internal
internal class CommandExpressionSyntaxNode : ExpressionSyntaxNode internal class CommandExpressionSyntaxNode : ExpressionSyntaxNode
{ {
internal readonly IdentifierNameExpressionSyntaxNode _commandName; internal readonly SyntaxToken _commandName;
internal readonly SyntaxList<UnquotedStringLiteralSyntaxNode> _arguments; internal readonly SyntaxList<UnquotedStringLiteralSyntaxNode> _arguments;
internal CommandExpressionSyntaxNode(IdentifierNameExpressionSyntaxNode commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments): base(TokenKind.CommandExpression) internal CommandExpressionSyntaxNode(SyntaxToken commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments): base(TokenKind.CommandExpression)
{ {
Slots = 2; Slots = 2;
this.AdjustWidth(commandName); this.AdjustWidth(commandName);
@ -1659,7 +1659,7 @@ namespace Parser.Internal
_arguments = arguments; _arguments = arguments;
} }
internal CommandExpressionSyntaxNode(IdentifierNameExpressionSyntaxNode commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments, TokenDiagnostic[] diagnostics): base(TokenKind.CommandExpression, diagnostics) internal CommandExpressionSyntaxNode(SyntaxToken commandName, SyntaxList<UnquotedStringLiteralSyntaxNode> arguments, TokenDiagnostic[] diagnostics): base(TokenKind.CommandExpression, diagnostics)
{ {
Slots = 2; Slots = 2;
this.AdjustWidth(commandName); this.AdjustWidth(commandName);
@ -1782,9 +1782,9 @@ namespace Parser.Internal
internal class AttributeSyntaxNode : SyntaxNode internal class AttributeSyntaxNode : SyntaxNode
{ {
internal readonly IdentifierNameExpressionSyntaxNode _name; internal readonly SyntaxToken _name;
internal readonly AttributeAssignmentSyntaxNode? _assignment; internal readonly AttributeAssignmentSyntaxNode? _assignment;
internal AttributeSyntaxNode(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment): base(TokenKind.Attribute) internal AttributeSyntaxNode(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment): base(TokenKind.Attribute)
{ {
Slots = 2; Slots = 2;
this.AdjustWidth(name); this.AdjustWidth(name);
@ -1793,7 +1793,7 @@ namespace Parser.Internal
_assignment = assignment; _assignment = assignment;
} }
internal AttributeSyntaxNode(IdentifierNameExpressionSyntaxNode name, AttributeAssignmentSyntaxNode? assignment, TokenDiagnostic[] diagnostics): base(TokenKind.Attribute, diagnostics) internal AttributeSyntaxNode(SyntaxToken name, AttributeAssignmentSyntaxNode? assignment, TokenDiagnostic[] diagnostics): base(TokenKind.Attribute, diagnostics)
{ {
Slots = 2; Slots = 2;
this.AdjustWidth(name); this.AdjustWidth(name);
@ -2140,11 +2140,11 @@ namespace Parser.Internal
{ {
internal readonly SyntaxToken _classdefKeyword; internal readonly SyntaxToken _classdefKeyword;
internal readonly AttributeListSyntaxNode? _attributes; internal readonly AttributeListSyntaxNode? _attributes;
internal readonly IdentifierNameExpressionSyntaxNode _className; internal readonly SyntaxToken _className;
internal readonly BaseClassListSyntaxNode? _baseClassList; internal readonly BaseClassListSyntaxNode? _baseClassList;
internal readonly SyntaxList _nodes; internal readonly SyntaxList _nodes;
internal readonly SyntaxToken _endKeyword; internal readonly SyntaxToken _endKeyword;
internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword): base(TokenKind.ClassDeclaration) internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword): base(TokenKind.ClassDeclaration)
{ {
Slots = 6; Slots = 6;
this.AdjustWidth(classdefKeyword); this.AdjustWidth(classdefKeyword);
@ -2161,7 +2161,7 @@ namespace Parser.Internal
_endKeyword = endKeyword; _endKeyword = endKeyword;
} }
internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, IdentifierNameExpressionSyntaxNode className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword, TokenDiagnostic[] diagnostics): base(TokenKind.ClassDeclaration, diagnostics) internal ClassDeclarationSyntaxNode(SyntaxToken classdefKeyword, AttributeListSyntaxNode? attributes, SyntaxToken className, BaseClassListSyntaxNode? baseClassList, SyntaxList nodes, SyntaxToken endKeyword, TokenDiagnostic[] diagnostics): base(TokenKind.ClassDeclaration, diagnostics)
{ {
Slots = 6; Slots = 6;
this.AdjustWidth(classdefKeyword); this.AdjustWidth(classdefKeyword);
@ -2249,10 +2249,10 @@ namespace Parser.Internal
internal class EnumerationItemSyntaxNode : SyntaxNode internal class EnumerationItemSyntaxNode : SyntaxNode
{ {
internal readonly IdentifierNameExpressionSyntaxNode _name; internal readonly SyntaxToken _name;
internal readonly EnumerationItemValueSyntaxNode? _values; internal readonly EnumerationItemValueSyntaxNode? _values;
internal readonly SyntaxList<SyntaxToken> _commas; internal readonly SyntaxList<SyntaxToken> _commas;
internal EnumerationItemSyntaxNode(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas): base(TokenKind.EnumerationItem) internal EnumerationItemSyntaxNode(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas): base(TokenKind.EnumerationItem)
{ {
Slots = 3; Slots = 3;
this.AdjustWidth(name); this.AdjustWidth(name);
@ -2263,7 +2263,7 @@ namespace Parser.Internal
_commas = commas; _commas = commas;
} }
internal EnumerationItemSyntaxNode(IdentifierNameExpressionSyntaxNode name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas, TokenDiagnostic[] diagnostics): base(TokenKind.EnumerationItem, diagnostics) internal EnumerationItemSyntaxNode(SyntaxToken name, EnumerationItemValueSyntaxNode? values, SyntaxList<SyntaxToken> commas, TokenDiagnostic[] diagnostics): base(TokenKind.EnumerationItem, diagnostics)
{ {
Slots = 3; Slots = 3;
this.AdjustWidth(name); this.AdjustWidth(name);

View File

@ -169,7 +169,7 @@
<Field Type="SyntaxToken" Name="closingBracket" /> <Field Type="SyntaxToken" Name="closingBracket" />
</Class> </Class>
<Class Name="CommandExpressionSyntaxNode" BaseClass="ExpressionSyntaxNode" Kind="CommandExpression"> <Class Name="CommandExpressionSyntaxNode" BaseClass="ExpressionSyntaxNode" Kind="CommandExpression">
<Field Type="IdentifierNameExpressionSyntaxNode" Name="commandName" /> <Field Type="SyntaxToken" Name="commandName" />
<Field Type="SyntaxList&lt;UnquotedStringLiteralSyntaxNode&gt;" Name="arguments" /> <Field Type="SyntaxList&lt;UnquotedStringLiteralSyntaxNode&gt;" Name="arguments" />
</Class> </Class>
<Class Name="BaseClassInvokationSyntaxNode" BaseClass="ExpressionSyntaxNode" Kind="ClassInvokationExpression"> <Class Name="BaseClassInvokationSyntaxNode" BaseClass="ExpressionSyntaxNode" Kind="ClassInvokationExpression">
@ -182,7 +182,7 @@
<Field Type="ExpressionSyntaxNode" Name="value" /> <Field Type="ExpressionSyntaxNode" Name="value" />
</Class> </Class>
<Class Name="AttributeSyntaxNode" BaseClass="SyntaxNode" Kind="Attribute"> <Class Name="AttributeSyntaxNode" BaseClass="SyntaxNode" Kind="Attribute">
<Field Type="IdentifierNameExpressionSyntaxNode" Name="name" /> <Field Type="SyntaxToken" Name="name" />
<Field Type="AttributeAssignmentSyntaxNode" Name="assignment" Nullable="true" /> <Field Type="AttributeAssignmentSyntaxNode" Name="assignment" Nullable="true" />
</Class> </Class>
<Class Name="AttributeListSyntaxNode" BaseClass="SyntaxNode" Kind="AttributeList"> <Class Name="AttributeListSyntaxNode" BaseClass="SyntaxNode" Kind="AttributeList">
@ -223,7 +223,7 @@
<Class Name="ClassDeclarationSyntaxNode" BaseClass="StatementSyntaxNode" Kind="ClassDeclaration"> <Class Name="ClassDeclarationSyntaxNode" BaseClass="StatementSyntaxNode" Kind="ClassDeclaration">
<Field Type="SyntaxToken" Name="classdefKeyword" /> <Field Type="SyntaxToken" Name="classdefKeyword" />
<Field Type="AttributeListSyntaxNode" Name="attributes" Nullable="true" /> <Field Type="AttributeListSyntaxNode" Name="attributes" Nullable="true" />
<Field Type="IdentifierNameExpressionSyntaxNode" Name="className" /> <Field Type="SyntaxToken" Name="className" />
<Field Type="BaseClassListSyntaxNode" Name="baseClassList" Nullable="true" /> <Field Type="BaseClassListSyntaxNode" Name="baseClassList" Nullable="true" />
<Field Type="SyntaxList" Name="nodes" /> <Field Type="SyntaxList" Name="nodes" />
<Field Type="SyntaxToken" Name="endKeyword" /> <Field Type="SyntaxToken" Name="endKeyword" />
@ -234,7 +234,7 @@
<Field Type="SyntaxToken" Name="closingBracket" /> <Field Type="SyntaxToken" Name="closingBracket" />
</Class> </Class>
<Class Name="EnumerationItemSyntaxNode" BaseClass="SyntaxNode" Kind="EnumerationItem"> <Class Name="EnumerationItemSyntaxNode" BaseClass="SyntaxNode" Kind="EnumerationItem">
<Field Type="IdentifierNameExpressionSyntaxNode" Name="name" /> <Field Type="SyntaxToken" Name="name" />
<Field Type="EnumerationItemValueSyntaxNode" Name="values" Nullable="true"/> <Field Type="EnumerationItemValueSyntaxNode" Name="values" Nullable="true"/>
<Field Type="SyntaxList&lt;SyntaxToken&gt;" Name="commas" /> <Field Type="SyntaxList&lt;SyntaxToken&gt;" Name="commas" />
</Class> </Class>

View File

@ -1663,18 +1663,16 @@ namespace Parser
public class CommandExpressionSyntaxNode : ExpressionSyntaxNode public class CommandExpressionSyntaxNode : ExpressionSyntaxNode
{ {
private SyntaxNode? _commandName;
private SyntaxNode? _arguments; private SyntaxNode? _arguments;
internal CommandExpressionSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) internal CommandExpressionSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position)
{ {
} }
public IdentifierNameExpressionSyntaxNode CommandName public SyntaxToken CommandName
{ {
get get
{ {
var red = this.GetRed(ref this._commandName!, 0); return new SyntaxToken(this, ((Parser.Internal.CommandExpressionSyntaxNode)_green)._commandName, this.GetChildPosition(0));
return red is null ? throw new System.Exception("commandName cannot be null.") : (IdentifierNameExpressionSyntaxNode)red;
} }
} }
@ -1691,7 +1689,7 @@ namespace Parser
{ {
return i switch return i switch
{ {
0 => GetRed(ref _commandName!, 0), 1 => GetRed(ref _arguments!, 1), _ => null 1 => GetRed(ref _arguments!, 1), _ => null
} }
; ;
@ -1795,18 +1793,16 @@ namespace Parser
public class AttributeSyntaxNode : SyntaxNode public class AttributeSyntaxNode : SyntaxNode
{ {
private SyntaxNode? _name;
private SyntaxNode? _assignment; private SyntaxNode? _assignment;
internal AttributeSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) internal AttributeSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position)
{ {
} }
public IdentifierNameExpressionSyntaxNode Name public SyntaxToken Name
{ {
get get
{ {
var red = this.GetRed(ref this._name!, 0); return new SyntaxToken(this, ((Parser.Internal.AttributeSyntaxNode)_green)._name, this.GetChildPosition(0));
return red is null ? throw new System.Exception("name cannot be null.") : (IdentifierNameExpressionSyntaxNode)red;
} }
} }
@ -1823,7 +1819,7 @@ namespace Parser
{ {
return i switch return i switch
{ {
0 => GetRed(ref _name!, 0), 1 => GetRed(ref _assignment, 1), _ => null 1 => GetRed(ref _assignment, 1), _ => null
} }
; ;
@ -2184,7 +2180,6 @@ namespace Parser
public class ClassDeclarationSyntaxNode : StatementSyntaxNode public class ClassDeclarationSyntaxNode : StatementSyntaxNode
{ {
private SyntaxNode? _attributes; private SyntaxNode? _attributes;
private SyntaxNode? _className;
private SyntaxNode? _baseClassList; private SyntaxNode? _baseClassList;
private SyntaxNode? _nodes; private SyntaxNode? _nodes;
internal ClassDeclarationSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) internal ClassDeclarationSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position)
@ -2199,6 +2194,14 @@ namespace Parser
} }
} }
public SyntaxToken ClassName
{
get
{
return new SyntaxToken(this, ((Parser.Internal.ClassDeclarationSyntaxNode)_green)._className, this.GetChildPosition(2));
}
}
public SyntaxToken EndKeyword public SyntaxToken EndKeyword
{ {
get get
@ -2216,15 +2219,6 @@ namespace Parser
} }
} }
public IdentifierNameExpressionSyntaxNode ClassName
{
get
{
var red = this.GetRed(ref this._className!, 2);
return red is null ? throw new System.Exception("className cannot be null.") : (IdentifierNameExpressionSyntaxNode)red;
}
}
public BaseClassListSyntaxNode? BaseClassList public BaseClassListSyntaxNode? BaseClassList
{ {
get get
@ -2247,7 +2241,7 @@ namespace Parser
{ {
return i switch return i switch
{ {
1 => GetRed(ref _attributes, 1), 2 => GetRed(ref _className!, 2), 3 => GetRed(ref _baseClassList, 3), 4 => GetRed(ref _nodes!, 4), _ => null 1 => GetRed(ref _attributes, 1), 3 => GetRed(ref _baseClassList, 3), 4 => GetRed(ref _nodes!, 4), _ => null
} }
; ;
@ -2309,19 +2303,17 @@ namespace Parser
public class EnumerationItemSyntaxNode : SyntaxNode public class EnumerationItemSyntaxNode : SyntaxNode
{ {
private SyntaxNode? _name;
private SyntaxNode? _values; private SyntaxNode? _values;
private SyntaxNode? _commas; private SyntaxNode? _commas;
internal EnumerationItemSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position) internal EnumerationItemSyntaxNode(SyntaxNode parent, Internal.GreenNode green, int position): base(parent, green, position)
{ {
} }
public IdentifierNameExpressionSyntaxNode Name public SyntaxToken Name
{ {
get get
{ {
var red = this.GetRed(ref this._name!, 0); return new SyntaxToken(this, ((Parser.Internal.EnumerationItemSyntaxNode)_green)._name, this.GetChildPosition(0));
return red is null ? throw new System.Exception("name cannot be null.") : (IdentifierNameExpressionSyntaxNode)red;
} }
} }
@ -2347,7 +2339,7 @@ namespace Parser
{ {
return i switch return i switch
{ {
0 => GetRed(ref _name!, 0), 1 => GetRed(ref _values, 1), 2 => GetRed(ref _commas!, 2), _ => null 1 => GetRed(ref _values, 1), 2 => GetRed(ref _commas!, 2), _ => null
} }
; ;