Skip to content

Commit 39da396

Browse files
committed
рефакторинг: ранний выход, лишние переменные и еще мелочи
1 parent c3ee3e3 commit 39da396

File tree

1 file changed

+58
-67
lines changed

1 file changed

+58
-67
lines changed

src/OneScript.Language/SyntaxAnalysis/DefaultBslParser.cs

Lines changed: 58 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -212,60 +212,55 @@ private void BuildVariableDefinition()
212212

213213
NextLexem();
214214

215-
if (IsUserSymbol(_lastExtractedLexem))
216-
{
217-
if (_inMethodScope)
218-
{
219-
if (_isStatementsDefined)
220-
{
221-
AddError(LocalizedErrors.LateVarDefinition());
222-
return;
223-
}
224-
}
225-
else
226-
{
227-
if (_isMethodsDefined)
228-
{
229-
AddError(LocalizedErrors.LateVarDefinition());
230-
return;
231-
}
232-
}
233-
234-
var symbolicName = _lastExtractedLexem.Content;
235-
CreateChild(variable, NodeKind.Identifier, _lastExtractedLexem);
236-
237-
NextLexem();
238-
if (_lastExtractedLexem.Token == Token.Export)
239-
{
240-
if (_inMethodScope)
241-
{
242-
AddError(LocalizedErrors.ExportedLocalVar(symbolicName));
243-
break;
244-
}
245-
CreateChild(variable, NodeKind.ExportFlag, _lastExtractedLexem);
246-
NextLexem();
247-
}
248-
249-
if (_lastExtractedLexem.Token == Token.Comma)
250-
{
251-
continue;
252-
}
253-
254-
if (_lastExtractedLexem.Token == Token.Semicolon)
255-
{
256-
NextLexem();
257-
}
258-
else
259-
{
260-
AddError(LocalizedErrors.SemicolonExpected());
261-
}
262-
263-
}
264-
else
265-
{
266-
AddError(LocalizedErrors.IdentifierExpected());
267-
}
268-
215+
if (!IsUserSymbol(_lastExtractedLexem))
216+
{
217+
AddError(LocalizedErrors.IdentifierExpected());
218+
return;
219+
}
220+
221+
if (_inMethodScope)
222+
{
223+
if (_isStatementsDefined)
224+
{
225+
AddError(LocalizedErrors.LateVarDefinition());
226+
return;
227+
}
228+
}
229+
else if (_isMethodsDefined)
230+
{
231+
AddError(LocalizedErrors.LateVarDefinition());
232+
return;
233+
}
234+
235+
var symbolicName = _lastExtractedLexem.Content;
236+
CreateChild(variable, NodeKind.Identifier, _lastExtractedLexem);
237+
238+
NextLexem();
239+
if (_lastExtractedLexem.Token == Token.Export)
240+
{
241+
if (_inMethodScope)
242+
{
243+
AddError(LocalizedErrors.ExportedLocalVar(symbolicName));
244+
return;
245+
}
246+
CreateChild(variable, NodeKind.ExportFlag, _lastExtractedLexem);
247+
NextLexem();
248+
}
249+
250+
if (_lastExtractedLexem.Token == Token.Comma)
251+
{
252+
continue;
253+
}
254+
255+
if (_lastExtractedLexem.Token == Token.Semicolon)
256+
{
257+
NextLexem();
258+
}
259+
else
260+
{
261+
AddError(LocalizedErrors.SemicolonExpected());
262+
}
263+
269264
break;
270265
}
271266
}
@@ -286,9 +281,7 @@ private void ApplyAnnotations(AnnotatableNode annotatable)
286281
private void BuildMethodsSection()
287282
{
288283
if (_lastExtractedLexem.Type != LexemType.Annotation
289-
&& _lastExtractedLexem.Token != Token.Procedure
290-
&& _lastExtractedLexem.Token != Token.Function
291-
&& _lastExtractedLexem.Token != Token.Async)
284+
&& !IsStartOfMethod(_lastExtractedLexem))
292285
{
293286
return;
294287
}
@@ -487,12 +480,11 @@ private bool BuildDefaultParameterValue(NonTerminalNode param, NodeKind nodeKind
487480

488481
if (LanguageDef.IsLiteral(_lastExtractedLexem))
489482
{
490-
string literalText = _lastExtractedLexem.Content;
491483
if (hasSign)
492484
{
493485
if (_lastExtractedLexem.Type == LexemType.NumberLiteral && signIsMinus)
494486
{
495-
literalText = '-' + literalText;
487+
_lastExtractedLexem.Content = '-' + _lastExtractedLexem.Content;
496488
}
497489
else if (_lastExtractedLexem.Type == LexemType.StringLiteral
498490
|| _lastExtractedLexem.Type == LexemType.DateLiteral)
@@ -502,7 +494,6 @@ private bool BuildDefaultParameterValue(NonTerminalNode param, NodeKind nodeKind
502494
}
503495
}
504496

505-
_lastExtractedLexem.Content = literalText;
506497
CreateChild(param, nodeKind, _lastExtractedLexem);
507498
NextLexem();
508499
}
@@ -861,8 +852,7 @@ private void BuildWhileStatement()
861852
}
862853

863854
private void BuildForStatement()
864-
{
865-
var lexem = _lastExtractedLexem;
855+
{
866856
NextLexem();
867857

868858
NodeKind loopKind;
@@ -902,8 +892,8 @@ private void BuildCountableForStatement(NonTerminalNode loopNode)
902892
AddError(LocalizedErrors.IdentifierExpected());
903893
BuildBatchWithContext(loopNode, Token.EndLoop);
904894
return;
905-
}
906-
895+
}
896+
907897
var counter = _lastExtractedLexem;
908898
if (!NextExpected(Token.Equal))
909899
{
@@ -1073,7 +1063,8 @@ private void BuildEventHandlerOperation(Token token)
10731063
if (source == null)
10741064
return;
10751065

1076-
if ((source.Kind != NodeKind.DereferenceOperation || !_lastDereferenceIsWritable) && source.Kind != NodeKind.IndexAccess)
1066+
if ((source.Kind != NodeKind.DereferenceOperation || !_lastDereferenceIsWritable)
1067+
&& source.Kind != NodeKind.IndexAccess)
10771068
{
10781069
AddError(LocalizedErrors.WrongEventName());
10791070
return;
@@ -1151,7 +1142,7 @@ private BslSyntaxNode CallOrVariable(Lexem identifier)
11511142
return BuildDereference(target);
11521143
}
11531144

1154-
private BslSyntaxNode BuildCall(BslSyntaxNode target, NodeKind callKind)
1145+
private CallNode BuildCall(BslSyntaxNode target, NodeKind callKind)
11551146
{
11561147
var callNode = new CallNode(callKind, _lastExtractedLexem);
11571148
callNode.AddChild(target);
@@ -1200,7 +1191,7 @@ private void BuildCallArgument(NonTerminalNode argsList)
12001191
if (_lastExtractedLexem.Token == Token.Comma)
12011192
{
12021193
CreateChild(argsList, NodeKind.CallArgument, _lastExtractedLexem);
1203-
1194+
12041195
BuildLastDefaultArg(argsList);
12051196
}
12061197
else if (_lastExtractedLexem.Token != Token.ClosePar)

0 commit comments

Comments
 (0)