Skip to content

Commit

Permalink
WIP: Fixed comments intendation and handling in resolvers
Browse files Browse the repository at this point in the history
  • Loading branch information
elamaunt committed Jun 21, 2021
1 parent 0f2c44e commit aaa6898
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/GDShrapt.Reader/Expressions/GDExpression.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,5 +135,11 @@ public bool IsHigherPriorityThan(GDExpression other, GDSideType consideringSide)

return false;
}

internal override void HandleSharpChar(GDReadingState state)
{
state.Pop();
state.PassSharpChar();
}
}
}
15 changes: 15 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDClassAtributesResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,21 @@ internal override void HandleNewLineAfterIntendation(GDReadingState state)
state.PassNewLine();
}

internal override void HandleSharpCharAfterIntendation(GDReadingState state)
{
if (_sequenceBuilder?.Length > 0)
{
var sequence = _sequenceBuilder.ToString();
ResetSequence();
Complete(state, sequence);
state.PassSharpChar();
return;
}

Owner.HandleReceivedToken(state.Push(new GDComment()));
state.PassSharpChar();
}

private void ResetSequence()
{
_sequenceBuilder.Clear();
Expand Down
15 changes: 15 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDClassMembersResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,21 @@ internal override void HandleNewLineAfterIntendation(GDReadingState state)
state.PassNewLine();
}

internal override void HandleSharpCharAfterIntendation(GDReadingState state)
{
if (_sequenceBuilder?.Length > 0)
{
var sequence = _sequenceBuilder.ToString();
ResetSequence();
Complete(state, sequence);
state.PassSharpChar();
return;
}

Owner.HandleReceivedToken(state.Push(new GDComment()));
state.PassSharpChar();
}

private void ResetSequence()
{
_sequenceBuilder.Clear();
Expand Down
7 changes: 7 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDExpressionResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,13 @@ internal override void HandleNewLineChar(GDReadingState state)
state.PassNewLine();
}

internal override void HandleSharpChar(GDReadingState state)
{
if (!CheckKeywords(state))
CompleteExpression(state);
state.PassSharpChar();
}

private void CompleteExpression(GDReadingState state)
{
if (_isCompleted)
Expand Down
4 changes: 3 additions & 1 deletion src/GDShrapt.Reader/Resolvers/GDIntendedResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ internal sealed override void HandleChar(char c, GDReadingState state)

internal abstract void HandleCharAfterIntendation(char c, GDReadingState state);
internal abstract void HandleNewLineAfterIntendation(GDReadingState state);
internal abstract void HandleSharpCharAfterIntendation(GDReadingState state);

bool HandleIntendation(char c, GDReadingState state)
{
Expand Down Expand Up @@ -112,7 +113,7 @@ internal sealed override void HandleNewLineChar(GDReadingState state)
internal override void HandleSharpChar(GDReadingState state)
{
if (_lineIntendationEnded)
base.HandleSharpChar(state);
HandleSharpCharAfterIntendation(state);
else
{
_inComment = true;
Expand Down Expand Up @@ -178,6 +179,7 @@ protected void SendIntendationTokensToOwner()

if (space != null)
{
space.Complete();
Owner.HandleReceivedToken(new GDIntendation()
{
Sequence = space.Sequence,
Expand Down
14 changes: 14 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDIntendedSequenceResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,19 @@ internal override void ForceComplete(GDReadingState state)
for (int i = 0; i < Index - 1; i++)
state.PassChar(s[i]);
}

internal override void HandleSharpCharAfterIntendation(GDReadingState state)
{
var s = Sequence;
state.Pop();
OnFail(state);

PassIntendationSequence(state);

for (int i = 0; i < Index - 1; i++)
state.PassChar(s[i]);

state.PassSharpChar();
}
}
}
6 changes: 6 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDMatchCasesResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ internal override void HandleNewLineAfterIntendation(GDReadingState state)
state.PassNewLine();
}

internal override void HandleSharpCharAfterIntendation(GDReadingState state)
{
Owner.HandleReceivedToken(state.Push(new GDComment()));
state.PassSharpChar();
}

internal override void ForceComplete(GDReadingState state)
{
if (_lastSpace != null)
Expand Down
15 changes: 15 additions & 0 deletions src/GDShrapt.Reader/Resolvers/GDStatementsResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,21 @@ internal override void HandleNewLineAfterIntendation(GDReadingState state)
state.PassNewLine();
}

internal override void HandleSharpCharAfterIntendation(GDReadingState state)
{
if (_sequenceBuilder.Length > 0)
{
var sequence = _sequenceBuilder.ToString();
_sequenceBuilder.Clear();
CompleteAsStatement(state, sequence);
state.PassSharpChar();
return;
}

Owner.HandleReceivedToken(state.Push(new GDComment()));
state.PassSharpChar();
}

private GDStatement CompleteAsStatement(GDReadingState state, string sequence)
{
_sequenceBuilder.Clear();
Expand Down

0 comments on commit aaa6898

Please sign in to comment.