Refactor SyntaxNode parent setting
This commit is contained in:
parent
e748f89fdf
commit
0ba85620a6
@ -1,13 +1,12 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection.Metadata;
|
|
||||||
using Lexer;
|
using Lexer;
|
||||||
|
|
||||||
namespace Parser
|
namespace Parser
|
||||||
{
|
{
|
||||||
public class SyntaxFactory
|
public class SyntaxFactory
|
||||||
{
|
{
|
||||||
private static SyntaxNode SetParent(SyntaxNode parent)
|
private static T SetParent<T>(T parent) where T : SyntaxNode
|
||||||
{
|
{
|
||||||
foreach (var node in parent.Children)
|
foreach (var node in parent.Children)
|
||||||
{
|
{
|
||||||
@ -51,8 +50,7 @@ namespace Parser
|
|||||||
body,
|
body,
|
||||||
end,
|
end,
|
||||||
semicolonOrComma);
|
semicolonOrComma);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FunctionOutputDescriptionNode FunctionOutputDescription(
|
public FunctionOutputDescriptionNode FunctionOutputDescription(
|
||||||
@ -69,8 +67,7 @@ namespace Parser
|
|||||||
.ToList(),
|
.ToList(),
|
||||||
equalitySign
|
equalitySign
|
||||||
);
|
);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParameterListNode ParameterList(List<SyntaxNode> nodes)
|
public ParameterListNode ParameterList(List<SyntaxNode> nodes)
|
||||||
@ -82,15 +79,13 @@ namespace Parser
|
|||||||
node => node is TokenNode tokenNode && tokenNode.Token.Kind != TokenKind.Comma
|
node => node is TokenNode tokenNode && tokenNode.Token.Kind != TokenKind.Comma
|
||||||
)
|
)
|
||||||
.ToList());
|
.ToList());
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatementListNode StatementList(List<SyntaxNode> nodes)
|
public StatementListNode StatementList(List<SyntaxNode> nodes)
|
||||||
{
|
{
|
||||||
var result = new StatementListNode(nodes);
|
var result = new StatementListNode(nodes);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FunctionInputDescriptionNode FunctionInputDescription(
|
public FunctionInputDescriptionNode FunctionInputDescription(
|
||||||
@ -105,8 +100,7 @@ namespace Parser
|
|||||||
closingBracket
|
closingBracket
|
||||||
};
|
};
|
||||||
var result = new FunctionInputDescriptionNode(children, openingBracket, parameterList, closingBracket);
|
var result = new FunctionInputDescriptionNode(children, openingBracket, parameterList, closingBracket);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TokenNode Token(Token token)
|
public TokenNode Token(Token token)
|
||||||
@ -136,8 +130,7 @@ namespace Parser
|
|||||||
endKeyword,
|
endKeyword,
|
||||||
semicolonOrComma,
|
semicolonOrComma,
|
||||||
optionalCommasAfterExpression);
|
optionalCommasAfterExpression);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SwitchCaseNode SwitchCase(
|
public SwitchCaseNode SwitchCase(
|
||||||
@ -159,8 +152,7 @@ namespace Parser
|
|||||||
caseIdentifier,
|
caseIdentifier,
|
||||||
statementList,
|
statementList,
|
||||||
optionalCommasAfterIdentifier);
|
optionalCommasAfterIdentifier);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssignmentExpressionNode AssignmentExpression(
|
public AssignmentExpressionNode AssignmentExpression(
|
||||||
@ -175,8 +167,7 @@ namespace Parser
|
|||||||
rhs
|
rhs
|
||||||
};
|
};
|
||||||
var result = new AssignmentExpressionNode(children, lhs, assignmentSign, rhs);
|
var result = new AssignmentExpressionNode(children, lhs, assignmentSign, rhs);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryPrefixOperationExpressionNode UnaryPrefixOperationExpression(
|
public UnaryPrefixOperationExpressionNode UnaryPrefixOperationExpression(
|
||||||
@ -189,8 +180,7 @@ namespace Parser
|
|||||||
operand
|
operand
|
||||||
};
|
};
|
||||||
var result = new UnaryPrefixOperationExpressionNode(children, operation, operand);
|
var result = new UnaryPrefixOperationExpressionNode(children, operation, operand);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryPostfixOperationExpressionNode UnaryPostfixOperationExpression(
|
public UnaryPostfixOperationExpressionNode UnaryPostfixOperationExpression(
|
||||||
@ -203,8 +193,7 @@ namespace Parser
|
|||||||
operation
|
operation
|
||||||
};
|
};
|
||||||
var result = new UnaryPostfixOperationExpressionNode(children, operand, operation);
|
var result = new UnaryPostfixOperationExpressionNode(children, operand, operation);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BinaryOperationExpressionNode BinaryOperationExpression(
|
public BinaryOperationExpressionNode BinaryOperationExpression(
|
||||||
@ -219,8 +208,7 @@ namespace Parser
|
|||||||
rhs
|
rhs
|
||||||
};
|
};
|
||||||
var result = new BinaryOperationExpressionNode(children, lhs, operation, rhs);
|
var result = new BinaryOperationExpressionNode(children, lhs, operation, rhs);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IdentifierNameNode IdentifierName(
|
public IdentifierNameNode IdentifierName(
|
||||||
@ -257,16 +245,14 @@ namespace Parser
|
|||||||
{
|
{
|
||||||
var children = new List<SyntaxNode> {expression};
|
var children = new List<SyntaxNode> {expression};
|
||||||
var result = new ExpressionStatementNode(children, expression, null);
|
var result = new ExpressionStatementNode(children, expression, null);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExpressionStatementNode ExpressionStatement(ExpressionNode expression, TokenNode semicolonOrComma)
|
public ExpressionStatementNode ExpressionStatement(ExpressionNode expression, TokenNode semicolonOrComma)
|
||||||
{
|
{
|
||||||
var children = new List<SyntaxNode> {expression, semicolonOrComma};
|
var children = new List<SyntaxNode> {expression, semicolonOrComma};
|
||||||
var result = new ExpressionStatementNode(children, expression, semicolonOrComma);
|
var result = new ExpressionStatementNode(children, expression, semicolonOrComma);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CellArrayElementAccessExpressionNode CellArrayElementAccessExpression(
|
public CellArrayElementAccessExpressionNode CellArrayElementAccessExpression(
|
||||||
@ -282,8 +268,7 @@ namespace Parser
|
|||||||
openingBrace,
|
openingBrace,
|
||||||
indices,
|
indices,
|
||||||
closingBrace);
|
closingBrace);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FunctionCallExpressionNode FunctionCallExpression(
|
public FunctionCallExpressionNode FunctionCallExpression(
|
||||||
@ -305,8 +290,7 @@ namespace Parser
|
|||||||
openingBracket,
|
openingBracket,
|
||||||
parameters,
|
parameters,
|
||||||
closingBracket);
|
closingBracket);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FunctionCallParameterListNode FunctionCallParameterList(List<SyntaxNode> nodes)
|
public FunctionCallParameterListNode FunctionCallParameterList(List<SyntaxNode> nodes)
|
||||||
@ -316,8 +300,7 @@ namespace Parser
|
|||||||
nodes
|
nodes
|
||||||
.OfType<ExpressionNode>()
|
.OfType<ExpressionNode>()
|
||||||
.ToList());
|
.ToList());
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayElementListNode ArrayElementList(List<SyntaxNode> nodes)
|
public ArrayElementListNode ArrayElementList(List<SyntaxNode> nodes)
|
||||||
@ -327,8 +310,7 @@ namespace Parser
|
|||||||
nodes
|
nodes
|
||||||
.OfType<ExpressionNode>()
|
.OfType<ExpressionNode>()
|
||||||
.ToList());
|
.ToList());
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompoundNameNode CompoundName(List<SyntaxNode> nodes)
|
public CompoundNameNode CompoundName(List<SyntaxNode> nodes)
|
||||||
@ -338,8 +320,7 @@ namespace Parser
|
|||||||
nodes
|
nodes
|
||||||
.OfType<IdentifierNameNode>()
|
.OfType<IdentifierNameNode>()
|
||||||
.ToList());
|
.ToList());
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayLiteralExpressionNode ArrayLiteralExpression(
|
public ArrayLiteralExpressionNode ArrayLiteralExpression(
|
||||||
@ -358,8 +339,7 @@ namespace Parser
|
|||||||
openingSquareBracket,
|
openingSquareBracket,
|
||||||
elements,
|
elements,
|
||||||
closingSquareBracket);
|
closingSquareBracket);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CellArrayLiteralExpressionNode CellArrayLiteralExpression(
|
public CellArrayLiteralExpressionNode CellArrayLiteralExpression(
|
||||||
@ -378,8 +358,7 @@ namespace Parser
|
|||||||
openingBrace,
|
openingBrace,
|
||||||
elements,
|
elements,
|
||||||
closingBrace);
|
closingBrace);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmptyExpressionNode EmptyExpression()
|
public EmptyExpressionNode EmptyExpression()
|
||||||
@ -403,8 +382,7 @@ namespace Parser
|
|||||||
leftOperand,
|
leftOperand,
|
||||||
dot,
|
dot,
|
||||||
rightOperand);
|
rightOperand);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WhileStatementNode WhileStatement(
|
public WhileStatementNode WhileStatement(
|
||||||
@ -432,8 +410,7 @@ namespace Parser
|
|||||||
body,
|
body,
|
||||||
end,
|
end,
|
||||||
semicolonOrComma);
|
semicolonOrComma);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatementNode AppendSemicolonOrComma(StatementNode statement, TokenNode semicolonOrComma)
|
public StatementNode AppendSemicolonOrComma(StatementNode statement, TokenNode semicolonOrComma)
|
||||||
@ -473,8 +450,7 @@ namespace Parser
|
|||||||
elseKeyword,
|
elseKeyword,
|
||||||
elseBody,
|
elseBody,
|
||||||
endKeyword);
|
endKeyword);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParenthesizedExpressionNode ParenthesizedExpression(
|
public ParenthesizedExpressionNode ParenthesizedExpression(
|
||||||
@ -493,8 +469,7 @@ namespace Parser
|
|||||||
openParen,
|
openParen,
|
||||||
expression,
|
expression,
|
||||||
closeParen);
|
closeParen);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ForStatementNode ForStatement(
|
public ForStatementNode ForStatement(
|
||||||
@ -519,8 +494,7 @@ namespace Parser
|
|||||||
body,
|
body,
|
||||||
endKeyword,
|
endKeyword,
|
||||||
optionalCommasAfterAssignment);
|
optionalCommasAfterAssignment);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IndirectMemberAccessNode IndirectMemberAccess(
|
public IndirectMemberAccessNode IndirectMemberAccess(
|
||||||
@ -539,8 +513,7 @@ namespace Parser
|
|||||||
openingBracket,
|
openingBracket,
|
||||||
indirectMemberName,
|
indirectMemberName,
|
||||||
closingBracket);
|
closingBracket);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public NamedFunctionHandleNode NamedFunctionHandle(
|
public NamedFunctionHandleNode NamedFunctionHandle(
|
||||||
@ -556,8 +529,7 @@ namespace Parser
|
|||||||
children,
|
children,
|
||||||
atSign,
|
atSign,
|
||||||
functionName);
|
functionName);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LambdaNode Lambda(
|
public LambdaNode Lambda(
|
||||||
@ -576,8 +548,7 @@ namespace Parser
|
|||||||
atSign,
|
atSign,
|
||||||
input,
|
input,
|
||||||
body);
|
body);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TryCatchStatementNode TryCatchStatement(
|
public TryCatchStatementNode TryCatchStatement(
|
||||||
@ -602,8 +573,7 @@ namespace Parser
|
|||||||
catchKeyword,
|
catchKeyword,
|
||||||
catchBody,
|
catchBody,
|
||||||
endKeyword);
|
endKeyword);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TryCatchStatementNode TryCatchStatement(
|
public TryCatchStatementNode TryCatchStatement(
|
||||||
@ -624,8 +594,7 @@ namespace Parser
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
endKeyword);
|
endKeyword);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandExpressionNode CommandExpression(
|
public CommandExpressionNode CommandExpression(
|
||||||
@ -641,8 +610,7 @@ namespace Parser
|
|||||||
children,
|
children,
|
||||||
identifierName,
|
identifierName,
|
||||||
arguments);
|
arguments);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseClassInvokationNode BaseClassInvokation(
|
public BaseClassInvokationNode BaseClassInvokation(
|
||||||
@ -661,8 +629,7 @@ namespace Parser
|
|||||||
methodName,
|
methodName,
|
||||||
atToken,
|
atToken,
|
||||||
baseClassNameAndArguments);
|
baseClassNameAndArguments);
|
||||||
SetParent(result);
|
return SetParent(result);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user