Assign GreenNode.Slots outside of constructor
This commit is contained in:
parent
6bc04ad659
commit
6e61b4c768
@ -9,19 +9,13 @@ namespace Parser.Internal
|
|||||||
internal abstract class GreenNode
|
internal abstract class GreenNode
|
||||||
{
|
{
|
||||||
public TokenKind Kind { get; }
|
public TokenKind Kind { get; }
|
||||||
public int Slots { get; }
|
public int Slots { get; protected set; }
|
||||||
public abstract GreenNode GetSlot(int i);
|
public abstract GreenNode GetSlot(int i);
|
||||||
|
|
||||||
public GreenNode(TokenKind kind)
|
public GreenNode(TokenKind kind)
|
||||||
{
|
{
|
||||||
Kind = kind;
|
Kind = kind;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GreenNode(TokenKind kind, int slots)
|
|
||||||
{
|
|
||||||
Kind = kind;
|
|
||||||
Slots = slots;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal abstract Parser.SyntaxNode CreateRed(Parser.SyntaxNode parent);
|
internal abstract Parser.SyntaxNode CreateRed(Parser.SyntaxNode parent);
|
||||||
|
|
||||||
|
@ -7,8 +7,9 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
private readonly GreenNode[] _elements;
|
private readonly GreenNode[] _elements;
|
||||||
|
|
||||||
protected SyntaxList(GreenNode[] elements) : base(TokenKind.List, elements.Length)
|
protected SyntaxList(GreenNode[] elements) : base(TokenKind.List)
|
||||||
{
|
{
|
||||||
|
Slots = elements.Length;
|
||||||
_elements = elements;
|
_elements = elements;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
using System;
|
namespace Parser.Internal
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Parser.Internal
|
|
||||||
{
|
{
|
||||||
internal class SyntaxList<T> : SyntaxNode where T : GreenNode
|
internal class SyntaxList<T> : SyntaxNode where T : GreenNode
|
||||||
{
|
{
|
||||||
private readonly SyntaxList _list;
|
private readonly SyntaxList _list;
|
||||||
|
|
||||||
protected SyntaxList(T[] list) : base(TokenKind.List, list.Length)
|
protected SyntaxList(T[] list) : base(TokenKind.List)
|
||||||
{
|
{
|
||||||
|
Slots = list.Length;
|
||||||
_list = SyntaxList.List(list);
|
_list = SyntaxList.List(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,8 +7,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal FileSyntaxNode(
|
internal FileSyntaxNode(
|
||||||
SyntaxList statementList,
|
SyntaxList statementList,
|
||||||
SyntaxToken endOfFile) : base(TokenKind.File, 2)
|
SyntaxToken endOfFile) : base(TokenKind.File)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_statementList = statementList;
|
_statementList = statementList;
|
||||||
_endOfFile = endOfFile;
|
_endOfFile = endOfFile;
|
||||||
}
|
}
|
||||||
@ -46,8 +48,10 @@ namespace Parser.Internal
|
|||||||
FunctionInputDescriptionSyntaxNode inputDescription,
|
FunctionInputDescriptionSyntaxNode inputDescription,
|
||||||
SyntaxList<SyntaxToken> commas,
|
SyntaxList<SyntaxToken> commas,
|
||||||
SyntaxList body,
|
SyntaxList body,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.FunctionDeclaration, 7)
|
SyntaxToken endKeyword) : base(TokenKind.FunctionDeclaration)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 7;
|
||||||
_functionKeyword = functionKeyword;
|
_functionKeyword = functionKeyword;
|
||||||
_outputDescription = outputDescription;
|
_outputDescription = outputDescription;
|
||||||
_name = name;
|
_name = name;
|
||||||
@ -85,8 +89,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal FunctionOutputDescriptionSyntaxNode(
|
internal FunctionOutputDescriptionSyntaxNode(
|
||||||
SyntaxList outputList,
|
SyntaxList outputList,
|
||||||
SyntaxToken assignmentSign) : base(TokenKind.FunctionOutputDescription, 2)
|
SyntaxToken assignmentSign) : base(TokenKind.FunctionOutputDescription)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_outputList = outputList;
|
_outputList = outputList;
|
||||||
_assignmentSign = assignmentSign;
|
_assignmentSign = assignmentSign;
|
||||||
}
|
}
|
||||||
@ -116,8 +122,10 @@ namespace Parser.Internal
|
|||||||
internal FunctionInputDescriptionSyntaxNode(
|
internal FunctionInputDescriptionSyntaxNode(
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
SyntaxList parameterList,
|
SyntaxList parameterList,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.FunctionInputDescription, 3)
|
SyntaxToken closingBracket) : base(TokenKind.FunctionInputDescription)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_parameterList = parameterList;
|
_parameterList = parameterList;
|
||||||
_closingBracket = closingBracket;
|
_closingBracket = closingBracket;
|
||||||
@ -153,8 +161,10 @@ namespace Parser.Internal
|
|||||||
ExpressionSyntaxNode switchExpression,
|
ExpressionSyntaxNode switchExpression,
|
||||||
SyntaxList<SyntaxToken> optionalCommas,
|
SyntaxList<SyntaxToken> optionalCommas,
|
||||||
SyntaxList<SwitchCaseSyntaxNode> cases,
|
SyntaxList<SwitchCaseSyntaxNode> cases,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.SwitchStatement, 5)
|
SyntaxToken endKeyword) : base(TokenKind.SwitchStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 5;
|
||||||
_switchKeyword = switchKeyword;
|
_switchKeyword = switchKeyword;
|
||||||
_switchExpression = switchExpression;
|
_switchExpression = switchExpression;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -192,8 +202,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken caseKeyword,
|
SyntaxToken caseKeyword,
|
||||||
ExpressionSyntaxNode caseIdentifier,
|
ExpressionSyntaxNode caseIdentifier,
|
||||||
SyntaxList<SyntaxToken> optionalCommas,
|
SyntaxList<SyntaxToken> optionalCommas,
|
||||||
SyntaxList body) : base(TokenKind.SwitchCase, 4)
|
SyntaxList body) : base(TokenKind.SwitchCase)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_caseKeyword = caseKeyword;
|
_caseKeyword = caseKeyword;
|
||||||
_caseIdentifier = caseIdentifier;
|
_caseIdentifier = caseIdentifier;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -231,8 +243,10 @@ namespace Parser.Internal
|
|||||||
ExpressionSyntaxNode condition,
|
ExpressionSyntaxNode condition,
|
||||||
SyntaxList<SyntaxToken> optionalCommas,
|
SyntaxList<SyntaxToken> optionalCommas,
|
||||||
SyntaxList body,
|
SyntaxList body,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.WhileStatement, 5)
|
SyntaxToken endKeyword) : base(TokenKind.WhileStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 5;
|
||||||
_whileKeyword = whileKeyword;
|
_whileKeyword = whileKeyword;
|
||||||
_condition = condition;
|
_condition = condition;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -270,8 +284,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken elseifKeyword,
|
SyntaxToken elseifKeyword,
|
||||||
ExpressionSyntaxNode condition,
|
ExpressionSyntaxNode condition,
|
||||||
SyntaxList<SyntaxToken> optionalCommas,
|
SyntaxList<SyntaxToken> optionalCommas,
|
||||||
SyntaxList body) : base(TokenKind.ElseifClause, 4)
|
SyntaxList body) : base(TokenKind.ElseifClause)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_elseifKeyword = elseifKeyword;
|
_elseifKeyword = elseifKeyword;
|
||||||
_condition = condition;
|
_condition = condition;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -303,8 +319,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal ElseClause(
|
internal ElseClause(
|
||||||
SyntaxToken elseKeyword,
|
SyntaxToken elseKeyword,
|
||||||
SyntaxList body) : base(TokenKind.ElseClause, 2)
|
SyntaxList body) : base(TokenKind.ElseClause)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_elseKeyword = elseKeyword;
|
_elseKeyword = elseKeyword;
|
||||||
_body = body;
|
_body = body;
|
||||||
}
|
}
|
||||||
@ -342,8 +360,10 @@ namespace Parser.Internal
|
|||||||
SyntaxList body,
|
SyntaxList body,
|
||||||
SyntaxList<ElseifClause> elseifClauses,
|
SyntaxList<ElseifClause> elseifClauses,
|
||||||
ElseClause elseClause,
|
ElseClause elseClause,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.IfStatement, 7)
|
SyntaxToken endKeyword) : base(TokenKind.IfStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 7;
|
||||||
_ifKeyword = ifKeyword;
|
_ifKeyword = ifKeyword;
|
||||||
_condition = condition;
|
_condition = condition;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -387,8 +407,10 @@ namespace Parser.Internal
|
|||||||
AssignmentExpressionSyntaxNode assignment,
|
AssignmentExpressionSyntaxNode assignment,
|
||||||
SyntaxList<SyntaxToken> optionalCommas,
|
SyntaxList<SyntaxToken> optionalCommas,
|
||||||
SyntaxList body,
|
SyntaxList body,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.ForStatement, 5)
|
SyntaxToken endKeyword) : base(TokenKind.ForStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 5;
|
||||||
_forKeyword = forKeyword;
|
_forKeyword = forKeyword;
|
||||||
_assignment = assignment;
|
_assignment = assignment;
|
||||||
_optionalCommas = optionalCommas;
|
_optionalCommas = optionalCommas;
|
||||||
@ -424,8 +446,10 @@ namespace Parser.Internal
|
|||||||
internal AssignmentExpressionSyntaxNode(
|
internal AssignmentExpressionSyntaxNode(
|
||||||
ExpressionSyntaxNode lhs,
|
ExpressionSyntaxNode lhs,
|
||||||
SyntaxToken assignmentSign,
|
SyntaxToken assignmentSign,
|
||||||
ExpressionSyntaxNode rhs) : base(TokenKind.AssignmentExpression, 3)
|
ExpressionSyntaxNode rhs) : base(TokenKind.AssignmentExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_lhs = lhs;
|
_lhs = lhs;
|
||||||
_assignmentSign = assignmentSign;
|
_assignmentSign = assignmentSign;
|
||||||
_rhs = rhs;
|
_rhs = rhs;
|
||||||
@ -455,8 +479,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal CatchClauseSyntaxNode(
|
internal CatchClauseSyntaxNode(
|
||||||
SyntaxToken catchKeyword,
|
SyntaxToken catchKeyword,
|
||||||
SyntaxList catchBody) : base(TokenKind.CatchClause, 2)
|
SyntaxList catchBody) : base(TokenKind.CatchClause)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_catchKeyword = catchKeyword;
|
_catchKeyword = catchKeyword;
|
||||||
_catchBody = catchBody;
|
_catchBody = catchBody;
|
||||||
}
|
}
|
||||||
@ -488,8 +514,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken tryKeyword,
|
SyntaxToken tryKeyword,
|
||||||
SyntaxList tryBody,
|
SyntaxList tryBody,
|
||||||
CatchClauseSyntaxNode catchClause,
|
CatchClauseSyntaxNode catchClause,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.TryCatchStatement, 4)
|
SyntaxToken endKeyword) : base(TokenKind.TryCatchStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_tryKeyword = tryKeyword;
|
_tryKeyword = tryKeyword;
|
||||||
_tryBody = tryBody;
|
_tryBody = tryBody;
|
||||||
_catchClause = catchClause;
|
_catchClause = catchClause;
|
||||||
@ -519,8 +547,10 @@ namespace Parser.Internal
|
|||||||
internal readonly ExpressionSyntaxNode _expression;
|
internal readonly ExpressionSyntaxNode _expression;
|
||||||
|
|
||||||
internal ExpressionStatementSyntaxNode(
|
internal ExpressionStatementSyntaxNode(
|
||||||
ExpressionSyntaxNode expression) : base(TokenKind.ExpressionStatement, 1)
|
ExpressionSyntaxNode expression) : base(TokenKind.ExpressionStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_expression = expression;
|
_expression = expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,8 +574,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _semicolon;
|
internal readonly SyntaxToken _semicolon;
|
||||||
|
|
||||||
internal EmptyStatementSyntaxNode(
|
internal EmptyStatementSyntaxNode(
|
||||||
SyntaxToken semicolon) : base(TokenKind.EmptyStatement, 1)
|
SyntaxToken semicolon) : base(TokenKind.EmptyStatement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_semicolon = semicolon;
|
_semicolon = semicolon;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -567,8 +599,10 @@ namespace Parser.Internal
|
|||||||
internal class EmptyExpressionSyntaxNode : ExpressionSyntaxNode
|
internal class EmptyExpressionSyntaxNode : ExpressionSyntaxNode
|
||||||
{
|
{
|
||||||
|
|
||||||
internal EmptyExpressionSyntaxNode() : base(TokenKind.EmptyExpression, 0)
|
internal EmptyExpressionSyntaxNode() : base(TokenKind.EmptyExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override Parser.SyntaxNode CreateRed(Parser.SyntaxNode parent)
|
internal override Parser.SyntaxNode CreateRed(Parser.SyntaxNode parent)
|
||||||
@ -592,8 +626,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal UnaryPrefixOperationExpressionSyntaxNode(
|
internal UnaryPrefixOperationExpressionSyntaxNode(
|
||||||
SyntaxToken operation,
|
SyntaxToken operation,
|
||||||
ExpressionSyntaxNode operand) : base(TokenKind.UnaryPrefixOperationExpression, 2)
|
ExpressionSyntaxNode operand) : base(TokenKind.UnaryPrefixOperationExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_operation = operation;
|
_operation = operation;
|
||||||
_operand = operand;
|
_operand = operand;
|
||||||
}
|
}
|
||||||
@ -619,8 +655,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxList _nodes;
|
internal readonly SyntaxList _nodes;
|
||||||
|
|
||||||
internal CompoundNameSyntaxNode(
|
internal CompoundNameSyntaxNode(
|
||||||
SyntaxList nodes) : base(TokenKind.CompoundName, 1)
|
SyntaxList nodes) : base(TokenKind.CompoundName)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -646,8 +684,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal NamedFunctionHandleSyntaxNode(
|
internal NamedFunctionHandleSyntaxNode(
|
||||||
SyntaxToken atSign,
|
SyntaxToken atSign,
|
||||||
CompoundNameSyntaxNode functionName) : base(TokenKind.NamedFunctionHandle, 2)
|
CompoundNameSyntaxNode functionName) : base(TokenKind.NamedFunctionHandle)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_atSign = atSign;
|
_atSign = atSign;
|
||||||
_functionName = functionName;
|
_functionName = functionName;
|
||||||
}
|
}
|
||||||
@ -677,8 +717,10 @@ namespace Parser.Internal
|
|||||||
internal LambdaSyntaxNode(
|
internal LambdaSyntaxNode(
|
||||||
SyntaxToken atSign,
|
SyntaxToken atSign,
|
||||||
FunctionInputDescriptionSyntaxNode input,
|
FunctionInputDescriptionSyntaxNode input,
|
||||||
ExpressionSyntaxNode body) : base(TokenKind.Lambda, 3)
|
ExpressionSyntaxNode body) : base(TokenKind.Lambda)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_atSign = atSign;
|
_atSign = atSign;
|
||||||
_input = input;
|
_input = input;
|
||||||
_body = body;
|
_body = body;
|
||||||
@ -710,8 +752,10 @@ namespace Parser.Internal
|
|||||||
internal BinaryOperationExpressionSyntaxNode(
|
internal BinaryOperationExpressionSyntaxNode(
|
||||||
ExpressionSyntaxNode lhs,
|
ExpressionSyntaxNode lhs,
|
||||||
SyntaxToken operation,
|
SyntaxToken operation,
|
||||||
ExpressionSyntaxNode rhs) : base(TokenKind.BinaryOperation, 3)
|
ExpressionSyntaxNode rhs) : base(TokenKind.BinaryOperation)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_lhs = lhs;
|
_lhs = lhs;
|
||||||
_operation = operation;
|
_operation = operation;
|
||||||
_rhs = rhs;
|
_rhs = rhs;
|
||||||
@ -739,8 +783,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _name;
|
internal readonly SyntaxToken _name;
|
||||||
|
|
||||||
internal IdentifierNameSyntaxNode(
|
internal IdentifierNameSyntaxNode(
|
||||||
SyntaxToken name) : base(TokenKind.IdentifierName, 1)
|
SyntaxToken name) : base(TokenKind.IdentifierName)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_name = name;
|
_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -764,8 +810,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _number;
|
internal readonly SyntaxToken _number;
|
||||||
|
|
||||||
internal NumberLiteralSyntaxNode(
|
internal NumberLiteralSyntaxNode(
|
||||||
SyntaxToken number) : base(TokenKind.NumberLiteralExpression, 1)
|
SyntaxToken number) : base(TokenKind.NumberLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_number = number;
|
_number = number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,8 +837,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _stringToken;
|
internal readonly SyntaxToken _stringToken;
|
||||||
|
|
||||||
internal StringLiteralSyntaxNode(
|
internal StringLiteralSyntaxNode(
|
||||||
SyntaxToken stringToken) : base(TokenKind.StringLiteralExpression, 1)
|
SyntaxToken stringToken) : base(TokenKind.StringLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_stringToken = stringToken;
|
_stringToken = stringToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -814,8 +864,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _stringToken;
|
internal readonly SyntaxToken _stringToken;
|
||||||
|
|
||||||
internal DoubleQuotedStringLiteralSyntaxNode(
|
internal DoubleQuotedStringLiteralSyntaxNode(
|
||||||
SyntaxToken stringToken) : base(TokenKind.DoubleQuotedStringLiteralExpression, 1)
|
SyntaxToken stringToken) : base(TokenKind.DoubleQuotedStringLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_stringToken = stringToken;
|
_stringToken = stringToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -839,8 +891,10 @@ namespace Parser.Internal
|
|||||||
internal readonly SyntaxToken _stringToken;
|
internal readonly SyntaxToken _stringToken;
|
||||||
|
|
||||||
internal UnquotedStringLiteralSyntaxNode(
|
internal UnquotedStringLiteralSyntaxNode(
|
||||||
SyntaxToken stringToken) : base(TokenKind.UnquotedStringLiteralExpression, 1)
|
SyntaxToken stringToken) : base(TokenKind.UnquotedStringLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 1;
|
||||||
_stringToken = stringToken;
|
_stringToken = stringToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,8 +922,10 @@ namespace Parser.Internal
|
|||||||
internal ArrayLiteralExpressionSyntaxNode(
|
internal ArrayLiteralExpressionSyntaxNode(
|
||||||
SyntaxToken openingSquareBracket,
|
SyntaxToken openingSquareBracket,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken closingSquareBracket) : base(TokenKind.ArrayLiteralExpression, 3)
|
SyntaxToken closingSquareBracket) : base(TokenKind.ArrayLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingSquareBracket = openingSquareBracket;
|
_openingSquareBracket = openingSquareBracket;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
_closingSquareBracket = closingSquareBracket;
|
_closingSquareBracket = closingSquareBracket;
|
||||||
@ -901,8 +957,10 @@ namespace Parser.Internal
|
|||||||
internal CellArrayLiteralExpressionSyntaxNode(
|
internal CellArrayLiteralExpressionSyntaxNode(
|
||||||
SyntaxToken openingBrace,
|
SyntaxToken openingBrace,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken closingBrace) : base(TokenKind.CellArrayLiteralExpression, 3)
|
SyntaxToken closingBrace) : base(TokenKind.CellArrayLiteralExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBrace = openingBrace;
|
_openingBrace = openingBrace;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
_closingBrace = closingBrace;
|
_closingBrace = closingBrace;
|
||||||
@ -934,8 +992,10 @@ namespace Parser.Internal
|
|||||||
internal ParenthesizedExpressionSyntaxNode(
|
internal ParenthesizedExpressionSyntaxNode(
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
ExpressionSyntaxNode expression,
|
ExpressionSyntaxNode expression,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.ParenthesizedExpression, 3)
|
SyntaxToken closingBracket) : base(TokenKind.ParenthesizedExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_expression = expression;
|
_expression = expression;
|
||||||
_closingBracket = closingBracket;
|
_closingBracket = closingBracket;
|
||||||
@ -969,8 +1029,10 @@ namespace Parser.Internal
|
|||||||
ExpressionSyntaxNode expression,
|
ExpressionSyntaxNode expression,
|
||||||
SyntaxToken openingBrace,
|
SyntaxToken openingBrace,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken closingBrace) : base(TokenKind.CellArrayElementAccess, 4)
|
SyntaxToken closingBrace) : base(TokenKind.CellArrayElementAccess)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_expression = expression;
|
_expression = expression;
|
||||||
_openingBrace = openingBrace;
|
_openingBrace = openingBrace;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
@ -1006,8 +1068,10 @@ namespace Parser.Internal
|
|||||||
ExpressionSyntaxNode functionName,
|
ExpressionSyntaxNode functionName,
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.FunctionCall, 4)
|
SyntaxToken closingBracket) : base(TokenKind.FunctionCall)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_functionName = functionName;
|
_functionName = functionName;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
@ -1041,8 +1105,10 @@ namespace Parser.Internal
|
|||||||
internal MemberAccessSyntaxNode(
|
internal MemberAccessSyntaxNode(
|
||||||
SyntaxNode leftOperand,
|
SyntaxNode leftOperand,
|
||||||
SyntaxToken dot,
|
SyntaxToken dot,
|
||||||
SyntaxNode rightOperand) : base(TokenKind.MemberAccess, 3)
|
SyntaxNode rightOperand) : base(TokenKind.MemberAccess)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_leftOperand = leftOperand;
|
_leftOperand = leftOperand;
|
||||||
_dot = dot;
|
_dot = dot;
|
||||||
_rightOperand = rightOperand;
|
_rightOperand = rightOperand;
|
||||||
@ -1072,8 +1138,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal UnaryPostixOperationExpressionSyntaxNode(
|
internal UnaryPostixOperationExpressionSyntaxNode(
|
||||||
ExpressionSyntaxNode operand,
|
ExpressionSyntaxNode operand,
|
||||||
SyntaxToken operation) : base(TokenKind.UnaryPostfixOperationExpression, 2)
|
SyntaxToken operation) : base(TokenKind.UnaryPostfixOperationExpression)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_operand = operand;
|
_operand = operand;
|
||||||
_operation = operation;
|
_operation = operation;
|
||||||
}
|
}
|
||||||
@ -1103,8 +1171,10 @@ namespace Parser.Internal
|
|||||||
internal IndirectMemberAccessSyntaxNode(
|
internal IndirectMemberAccessSyntaxNode(
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
ExpressionSyntaxNode expression,
|
ExpressionSyntaxNode expression,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.IndirectMemberAccess, 3)
|
SyntaxToken closingBracket) : base(TokenKind.IndirectMemberAccess)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_expression = expression;
|
_expression = expression;
|
||||||
_closingBracket = closingBracket;
|
_closingBracket = closingBracket;
|
||||||
@ -1134,8 +1204,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal CommandExpressionSyntaxNode(
|
internal CommandExpressionSyntaxNode(
|
||||||
IdentifierNameSyntaxNode commandName,
|
IdentifierNameSyntaxNode commandName,
|
||||||
SyntaxList<UnquotedStringLiteralSyntaxNode> arguments) : base(TokenKind.Command, 2)
|
SyntaxList<UnquotedStringLiteralSyntaxNode> arguments) : base(TokenKind.Command)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_commandName = commandName;
|
_commandName = commandName;
|
||||||
_arguments = arguments;
|
_arguments = arguments;
|
||||||
}
|
}
|
||||||
@ -1165,8 +1237,10 @@ namespace Parser.Internal
|
|||||||
internal BaseClassInvokationSyntaxNode(
|
internal BaseClassInvokationSyntaxNode(
|
||||||
ExpressionSyntaxNode methodName,
|
ExpressionSyntaxNode methodName,
|
||||||
SyntaxToken atSign,
|
SyntaxToken atSign,
|
||||||
ExpressionSyntaxNode baseClassNameAndArguments) : base(TokenKind.ClassInvokation, 3)
|
ExpressionSyntaxNode baseClassNameAndArguments) : base(TokenKind.ClassInvokation)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_methodName = methodName;
|
_methodName = methodName;
|
||||||
_atSign = atSign;
|
_atSign = atSign;
|
||||||
_baseClassNameAndArguments = baseClassNameAndArguments;
|
_baseClassNameAndArguments = baseClassNameAndArguments;
|
||||||
@ -1196,8 +1270,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal AttributeAssignmentSyntaxNode(
|
internal AttributeAssignmentSyntaxNode(
|
||||||
SyntaxToken assignmentSign,
|
SyntaxToken assignmentSign,
|
||||||
ExpressionSyntaxNode value) : base(TokenKind.AttributeAssignment, 2)
|
ExpressionSyntaxNode value) : base(TokenKind.AttributeAssignment)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_assignmentSign = assignmentSign;
|
_assignmentSign = assignmentSign;
|
||||||
_value = value;
|
_value = value;
|
||||||
}
|
}
|
||||||
@ -1225,8 +1301,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal AttributeSyntaxNode(
|
internal AttributeSyntaxNode(
|
||||||
IdentifierNameSyntaxNode name,
|
IdentifierNameSyntaxNode name,
|
||||||
AttributeAssignmentSyntaxNode assignment) : base(TokenKind.Attribute, 2)
|
AttributeAssignmentSyntaxNode assignment) : base(TokenKind.Attribute)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_name = name;
|
_name = name;
|
||||||
_assignment = assignment;
|
_assignment = assignment;
|
||||||
}
|
}
|
||||||
@ -1256,8 +1334,10 @@ namespace Parser.Internal
|
|||||||
internal AttributeListSyntaxNode(
|
internal AttributeListSyntaxNode(
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.AttributeList, 3)
|
SyntaxToken closingBracket) : base(TokenKind.AttributeList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_nodes = nodes;
|
_nodes = nodes;
|
||||||
_closingBracket = closingBracket;
|
_closingBracket = closingBracket;
|
||||||
@ -1297,8 +1377,10 @@ namespace Parser.Internal
|
|||||||
FunctionInputDescriptionSyntaxNode inputDescription,
|
FunctionInputDescriptionSyntaxNode inputDescription,
|
||||||
SyntaxList<SyntaxToken> commas,
|
SyntaxList<SyntaxToken> commas,
|
||||||
SyntaxList body,
|
SyntaxList body,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.MethodDefinition, 7)
|
SyntaxToken endKeyword) : base(TokenKind.MethodDefinition)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 7;
|
||||||
_functionKeyword = functionKeyword;
|
_functionKeyword = functionKeyword;
|
||||||
_outputDescription = outputDescription;
|
_outputDescription = outputDescription;
|
||||||
_name = name;
|
_name = name;
|
||||||
@ -1338,8 +1420,10 @@ namespace Parser.Internal
|
|||||||
internal AbstractMethodDeclarationSyntaxNode(
|
internal AbstractMethodDeclarationSyntaxNode(
|
||||||
FunctionOutputDescriptionSyntaxNode outputDescription,
|
FunctionOutputDescriptionSyntaxNode outputDescription,
|
||||||
CompoundNameSyntaxNode name,
|
CompoundNameSyntaxNode name,
|
||||||
FunctionInputDescriptionSyntaxNode inputDescription) : base(TokenKind.AbstractMethodDeclaration, 3)
|
FunctionInputDescriptionSyntaxNode inputDescription) : base(TokenKind.AbstractMethodDeclaration)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_outputDescription = outputDescription;
|
_outputDescription = outputDescription;
|
||||||
_name = name;
|
_name = name;
|
||||||
_inputDescription = inputDescription;
|
_inputDescription = inputDescription;
|
||||||
@ -1373,8 +1457,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken methodsKeyword,
|
SyntaxToken methodsKeyword,
|
||||||
AttributeListSyntaxNode attributes,
|
AttributeListSyntaxNode attributes,
|
||||||
SyntaxList methods,
|
SyntaxList methods,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.MethodsList, 4)
|
SyntaxToken endKeyword) : base(TokenKind.MethodsList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_methodsKeyword = methodsKeyword;
|
_methodsKeyword = methodsKeyword;
|
||||||
_attributes = attributes;
|
_attributes = attributes;
|
||||||
_methods = methods;
|
_methods = methods;
|
||||||
@ -1410,8 +1496,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken propertiesKeyword,
|
SyntaxToken propertiesKeyword,
|
||||||
AttributeListSyntaxNode attributes,
|
AttributeListSyntaxNode attributes,
|
||||||
SyntaxList properties,
|
SyntaxList properties,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.PropertiesList, 4)
|
SyntaxToken endKeyword) : base(TokenKind.PropertiesList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_propertiesKeyword = propertiesKeyword;
|
_propertiesKeyword = propertiesKeyword;
|
||||||
_attributes = attributes;
|
_attributes = attributes;
|
||||||
_properties = properties;
|
_properties = properties;
|
||||||
@ -1443,8 +1531,10 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal BaseClassListSyntaxNode(
|
internal BaseClassListSyntaxNode(
|
||||||
SyntaxToken lessSign,
|
SyntaxToken lessSign,
|
||||||
SyntaxList baseClasses) : base(TokenKind.BaseClassList, 2)
|
SyntaxList baseClasses) : base(TokenKind.BaseClassList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 2;
|
||||||
_lessSign = lessSign;
|
_lessSign = lessSign;
|
||||||
_baseClasses = baseClasses;
|
_baseClasses = baseClasses;
|
||||||
}
|
}
|
||||||
@ -1480,8 +1570,10 @@ namespace Parser.Internal
|
|||||||
IdentifierNameSyntaxNode className,
|
IdentifierNameSyntaxNode className,
|
||||||
BaseClassListSyntaxNode baseClassList,
|
BaseClassListSyntaxNode baseClassList,
|
||||||
SyntaxList nodes,
|
SyntaxList nodes,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.ClassDeclaration, 6)
|
SyntaxToken endKeyword) : base(TokenKind.ClassDeclaration)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 6;
|
||||||
_classdefKeyword = classdefKeyword;
|
_classdefKeyword = classdefKeyword;
|
||||||
_attributes = attributes;
|
_attributes = attributes;
|
||||||
_className = className;
|
_className = className;
|
||||||
@ -1519,8 +1611,10 @@ namespace Parser.Internal
|
|||||||
internal EnumerationItemValueSyntaxNode(
|
internal EnumerationItemValueSyntaxNode(
|
||||||
SyntaxToken openingBracket,
|
SyntaxToken openingBracket,
|
||||||
SyntaxList values,
|
SyntaxList values,
|
||||||
SyntaxToken closingBracket) : base(TokenKind.EnumerationItemValue, 3)
|
SyntaxToken closingBracket) : base(TokenKind.EnumerationItemValue)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_openingBracket = openingBracket;
|
_openingBracket = openingBracket;
|
||||||
_values = values;
|
_values = values;
|
||||||
_closingBracket = closingBracket;
|
_closingBracket = closingBracket;
|
||||||
@ -1552,8 +1646,10 @@ namespace Parser.Internal
|
|||||||
internal EnumerationItemSyntaxNode(
|
internal EnumerationItemSyntaxNode(
|
||||||
IdentifierNameSyntaxNode name,
|
IdentifierNameSyntaxNode name,
|
||||||
EnumerationItemValueSyntaxNode values,
|
EnumerationItemValueSyntaxNode values,
|
||||||
SyntaxList<SyntaxToken> commas) : base(TokenKind.EnumerationItem, 3)
|
SyntaxList<SyntaxToken> commas) : base(TokenKind.EnumerationItem)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 3;
|
||||||
_name = name;
|
_name = name;
|
||||||
_values = values;
|
_values = values;
|
||||||
_commas = commas;
|
_commas = commas;
|
||||||
@ -1587,8 +1683,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken enumerationKeyword,
|
SyntaxToken enumerationKeyword,
|
||||||
AttributeListSyntaxNode attributes,
|
AttributeListSyntaxNode attributes,
|
||||||
SyntaxList<EnumerationItemSyntaxNode> items,
|
SyntaxList<EnumerationItemSyntaxNode> items,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.EnumerationList, 4)
|
SyntaxToken endKeyword) : base(TokenKind.EnumerationList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_enumerationKeyword = enumerationKeyword;
|
_enumerationKeyword = enumerationKeyword;
|
||||||
_attributes = attributes;
|
_attributes = attributes;
|
||||||
_items = items;
|
_items = items;
|
||||||
@ -1624,8 +1722,10 @@ namespace Parser.Internal
|
|||||||
SyntaxToken eventsKeyword,
|
SyntaxToken eventsKeyword,
|
||||||
AttributeListSyntaxNode attributes,
|
AttributeListSyntaxNode attributes,
|
||||||
SyntaxList events,
|
SyntaxList events,
|
||||||
SyntaxToken endKeyword) : base(TokenKind.EventsList, 4)
|
SyntaxToken endKeyword) : base(TokenKind.EventsList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Slots = 4;
|
||||||
_eventsKeyword = eventsKeyword;
|
_eventsKeyword = eventsKeyword;
|
||||||
_attributes = attributes;
|
_attributes = attributes;
|
||||||
_events = events;
|
_events = events;
|
||||||
|
@ -6,7 +6,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
internal abstract class SyntaxNode : GreenNode
|
internal abstract class SyntaxNode : GreenNode
|
||||||
{
|
{
|
||||||
protected SyntaxNode(TokenKind kind, int slots) : base(kind, slots)
|
protected SyntaxNode(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,28 +54,28 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
internal abstract class StatementSyntaxNode : SyntaxNode
|
internal abstract class StatementSyntaxNode : SyntaxNode
|
||||||
{
|
{
|
||||||
protected StatementSyntaxNode(TokenKind kind, int slots) : base(kind, slots + 1)
|
protected StatementSyntaxNode(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal abstract class ExpressionSyntaxNode : SyntaxNode
|
internal abstract class ExpressionSyntaxNode : SyntaxNode
|
||||||
{
|
{
|
||||||
protected ExpressionSyntaxNode(TokenKind kind, int slots) : base(kind, slots)
|
protected ExpressionSyntaxNode(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal abstract class FunctionHandleSyntaxNode : ExpressionSyntaxNode
|
internal abstract class FunctionHandleSyntaxNode : ExpressionSyntaxNode
|
||||||
{
|
{
|
||||||
protected FunctionHandleSyntaxNode(TokenKind kind, int slots) : base(kind, slots)
|
protected FunctionHandleSyntaxNode(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal abstract class MethodDeclarationSyntaxNode : StatementSyntaxNode
|
internal abstract class MethodDeclarationSyntaxNode : StatementSyntaxNode
|
||||||
{
|
{
|
||||||
protected MethodDeclarationSyntaxNode(TokenKind kind, int slots) : base(kind, slots)
|
protected MethodDeclarationSyntaxNode(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ namespace Parser.Internal
|
|||||||
public override string Text => "";
|
public override string Text => "";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected SyntaxToken(TokenKind kind) : base(kind, 0)
|
protected SyntaxToken(TokenKind kind) : base(kind)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
private readonly string _text;
|
private readonly string _text;
|
||||||
|
|
||||||
public SyntaxTrivia(TokenKind kind, string text) : base(kind, 0)
|
public SyntaxTrivia(TokenKind kind, string text) : base(kind)
|
||||||
{
|
{
|
||||||
_text = text;
|
_text = text;
|
||||||
}
|
}
|
||||||
|
@ -82,11 +82,12 @@ namespace SyntaxGenerator
|
|||||||
node.Fields.Select(field => $"\n {field.FieldType} {field.FieldName}"));
|
node.Fields.Select(field => $"\n {field.FieldType} {field.FieldName}"));
|
||||||
|
|
||||||
var header =
|
var header =
|
||||||
$" internal {node.ClassName}({arguments}) : base(TokenKind.{node.TokenKindName}, {node.Fields.Length})\n";
|
$" internal {node.ClassName}({arguments}) : base(TokenKind.{node.TokenKindName})\n";
|
||||||
|
var slotsAssignment = $"\n Slots = {node.Fields.Length};\n";
|
||||||
var assignments = string.Join(
|
var assignments = string.Join(
|
||||||
"",
|
"",
|
||||||
node.Fields.Select(GenerateFieldAssignmentInsideConstructor));
|
node.Fields.Select(GenerateFieldAssignmentInsideConstructor));
|
||||||
return header + " {\n" + assignments + " }\n";
|
return header + " {\n" + slotsAssignment + assignments + " }\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GenerateConstructor(SyntaxNodeDescription node)
|
private static string GenerateConstructor(SyntaxNodeDescription node)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user