diff --git a/src/GDShrapt.Reader/Resolvers/GDContentResolver.cs b/src/GDShrapt.Reader/Resolvers/GDContentResolver.cs index b08c247..8ab1536 100644 --- a/src/GDShrapt.Reader/Resolvers/GDContentResolver.cs +++ b/src/GDShrapt.Reader/Resolvers/GDContentResolver.cs @@ -2,7 +2,7 @@ namespace GDShrapt.Reader { - internal class GDContentResolver : GDResolver + internal class GDContentResolver : GDIntendedResolver { new IIntendedTokenReceiver Owner { get; } @@ -11,35 +11,40 @@ internal class GDContentResolver : GDResolver GDSpace _lastSpace; public GDContentResolver(IIntendedTokenReceiver owner) - : base(owner) + : base(owner, 0) { Owner = owner; } - internal override void HandleChar(char c, GDReadingState state) + internal override void HandleCharAfterIntendation(char c, GDReadingState state) { - if (IsSpace(c)) + if (char.IsLetter(c) || c == '_') { - if (_sequence.Length == 0) - { - state.PushAndPass(_lastSpace = new GDSpace(), c); - } - else - { - HandleSequence(_sequence.ToString()); - } + _sequence.Append(c); + return; } - else + + if (_sequence.Length > 0) { - //if (char. + HandleSequence(_sequence.ToString()); + _sequence.Clear(); + state.PassChar(c); + return; + } - if (char.IsLetter(c)) - { - _sequence.Append(c); - return; - } + if (IsSpace(c)) + { + state.PushAndPass(_lastSpace = new GDSpace(), c); + return; } + + // statements + //state.Pop(); + + state.PushAndPass(new GDStatementsList(), c); + + } private void HandleSequence(string seq) @@ -47,7 +52,7 @@ private void HandleSequence(string seq) } - internal override void HandleNewLineChar(GDReadingState state) + internal override void HandleNewLineAfterIntendation(GDReadingState state) { if (_sequence.Length == 0) { @@ -65,7 +70,7 @@ internal override void HandleNewLineChar(GDReadingState state) } } - internal override void HandleSharpChar(GDReadingState state) + internal override void HandleSharpCharAfterIntendation(GDReadingState state) { if (_sequence.Length == 0) { diff --git a/src/GDShrapt.Reader/Resolvers/GDIntendedResolver.cs b/src/GDShrapt.Reader/Resolvers/GDIntendedResolver.cs index 4df432e..b46fe7f 100644 --- a/src/GDShrapt.Reader/Resolvers/GDIntendedResolver.cs +++ b/src/GDShrapt.Reader/Resolvers/GDIntendedResolver.cs @@ -9,6 +9,9 @@ internal abstract class GDIntendedResolver : GDResolver readonly StringBuilder _sequenceBuilder = new StringBuilder(); int _lineIntendation; + + public int CalculatedIntendation => _lineIntendation; + bool _lineIntendationEnded; int _spaceCounter; bool _inComment;