Skip to content

Commit 269a431

Browse files
committed
унификация создания узлов
1 parent 39da396 commit 269a431

File tree

4 files changed

+18
-20
lines changed

4 files changed

+18
-20
lines changed

src/OneScript.Language/SyntaxAnalysis/AstNodes/MethodNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public MethodNode() : base(NodeKind.Method)
3030
public IReadOnlyList<VariableDefinitionNode> VariableDefinitions()
3131
{
3232
if (VariableSection == default)
33-
return new VariableDefinitionNode[0];
33+
return System.Array.Empty<VariableDefinitionNode>();
3434

3535
return VariableSection.Children
3636
.Cast<VariableDefinitionNode>()

src/OneScript.Language/SyntaxAnalysis/AstNodes/MethodSignatureNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public IEnumerable<MethodParameterNode> GetParameters()
2828
{
2929
var paramList = Children.FirstOrDefault(x => x.Kind == NodeKind.MethodParameters);
3030
if (paramList == default)
31-
return new MethodParameterNode[0];
31+
return System.Array.Empty<MethodParameterNode>();
3232

3333
return ((NonTerminalNode) paramList).Children.Cast<MethodParameterNode>();
3434
}

src/OneScript.Language/SyntaxAnalysis/AstNodes/TerminalNode.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public TerminalNode(NodeKind kind, Lexem lexem)
2626
Location = lexem.Location;
2727
}
2828

29-
public override IReadOnlyList<BslSyntaxNode> Children => EmptyChildren;
30-
31-
private static readonly BslSyntaxNode[] EmptyChildren = new BslSyntaxNode[0];
29+
public override IReadOnlyList<BslSyntaxNode> Children => System.Array.Empty<BslSyntaxNode>();
3230
}
3331
}

src/OneScript.Language/SyntaxAnalysis/DefaultBslParser.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,8 @@ private void BuildMethodVariablesSection()
373373

374374
private void BuildMethodBody()
375375
{
376-
var body = CreateChild(CurrentParent, NodeKind.CodeBatch, _lastExtractedLexem);
377-
PushContext((NonTerminalNode)body);
376+
var body = _nodeContext.AddChild(new CodeBatchNode(_lastExtractedLexem));
377+
PushContext(body);
378378
try
379379
{
380380
BuildCodeBatch(_isInFunctionScope ? Token.EndFunction : Token.EndProcedure);
@@ -652,7 +652,7 @@ private void BuildCodeBatch(params Token[] endTokens)
652652
private void DefineLabel(Lexem label)
653653
{
654654
var node = new LabelNode(label);
655-
_nodeContext.AddChild(node);
655+
CurrentParent.AddChild(node);
656656
NextLexem();
657657
}
658658

@@ -732,9 +732,9 @@ private void BuildComplexStructureStatement()
732732

733733
private void BuildGlobalCallAwaitOperator()
734734
{
735-
Debug.Assert(_lastExtractedLexem.Token == Token.Await);
736-
737-
_nodeContext.AddChild(TerminalNode());
735+
Debug.Assert(_lastExtractedLexem.Token == Token.Await);
736+
737+
CurrentParent.AddChild(TerminalNode());
738738
}
739739

740740

@@ -775,7 +775,7 @@ private void BuildGotoOperator()
775775
gotoNode.AddChild(new LabelNode(_lastExtractedLexem));
776776
NextLexem();
777777

778-
_nodeContext.AddChild(gotoNode);
778+
CurrentParent.AddChild(gotoNode);
779779
}
780780

781781
private void CheckAsyncMethod()
@@ -834,8 +834,9 @@ private void BuildWhileStatement()
834834
var loopNode = _nodeContext.AddChild(new WhileLoopNode(_lastExtractedLexem));
835835
NextLexem();
836836
BuildExpressionUpTo(loopNode, Token.Loop);
837-
var body = CreateChild(loopNode, NodeKind.CodeBatch, _lastExtractedLexem);
838-
PushContext((NonTerminalNode)body);
837+
var body = loopNode.AddNode(new CodeBatchNode(_lastExtractedLexem));
838+
839+
PushContext(body);
839840
var loopState = _isInLoopScope;
840841
try
841842
{
@@ -912,8 +913,8 @@ private void BuildCountableForStatement(NonTerminalNode loopNode)
912913

913914
var limit = new NonTerminalNode(NodeKind.ForLimit, _lastExtractedLexem);
914915
BuildExpressionUpTo(limit, Token.Loop);
915-
loopNode.AddChild(limit);
916-
916+
loopNode.AddChild(limit);
917+
917918
BuildBatchWithContext(loopNode, Token.EndLoop);
918919

919920
CreateChild(loopNode, NodeKind.BlockEnd, _lastExtractedLexem);
@@ -1190,7 +1191,7 @@ private void BuildCallArgument(NonTerminalNode argsList)
11901191
{
11911192
if (_lastExtractedLexem.Token == Token.Comma)
11921193
{
1193-
CreateChild(argsList, NodeKind.CallArgument, _lastExtractedLexem);
1194+
argsList.AddChild(new NonTerminalNode(NodeKind.CallArgument, _lastExtractedLexem));
11941195

11951196
BuildLastDefaultArg(argsList);
11961197
}
@@ -1210,7 +1211,7 @@ private void BuildLastDefaultArg(NonTerminalNode argsList)
12101211
NextLexem();
12111212
if (_lastExtractedLexem.Token == Token.ClosePar)
12121213
{
1213-
CreateChild(argsList, NodeKind.CallArgument, _lastExtractedLexem);
1214+
argsList.AddChild(new NonTerminalNode(NodeKind.CallArgument, _lastExtractedLexem));
12141215
}
12151216
}
12161217

@@ -1588,11 +1589,10 @@ private Token[] PopStructureToken()
15881589
return tok;
15891590
}
15901591

1591-
private static BslSyntaxNode CreateChild(NonTerminalNode parent, NodeKind kind, in Lexem lex)
1592+
private static void CreateChild(NonTerminalNode parent, NodeKind kind, in Lexem lex)
15921593
{
15931594
var child = NodeBuilder.CreateNode(kind, lex);
15941595
parent.AddChild(child);
1595-
return child;
15961596
}
15971597

15981598
private bool TryParseNode(Action action)

0 commit comments

Comments
 (0)