Skip to content

Commit 3347bd4

Browse files
author
Charlie Barto
committed
made parens not inclded in tokens that preceed them
1 parent e77aedd commit 3347bd4

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

NimrodVS/NimrodScanner.cs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using Microsoft.VisualStudio.Package;
77
using Microsoft.VisualStudio.TextManager.Interop;
8+
using System.Diagnostics;
89
namespace Company.NimrodVS
910
{
1011
public enum TTokenClass : int
@@ -69,7 +70,7 @@ public NimrodTokenizer(string source)
6970
m_source = source;
7071
start = 0;
7172
end = -1;
72-
advanceOne();
73+
advanceOne(NimrodScannerFlags.None);
7374
}
7475
private static int skipChar(string str, char chr, int idx)
7576
{
@@ -87,8 +88,12 @@ private static int skipChar(string str, char chr, int idx)
8788
}
8889
return idx;
8990
}
90-
public void advanceOne()
91+
public void advanceOne(NimrodScannerFlags flags)
9192
{
93+
/*if (m_source.Contains("else:"))
94+
{
95+
Debugger.Break();
96+
}*/
9297
start = end + 1;
9398
if (end >= m_source.Length)
9499
{
@@ -100,7 +105,7 @@ public void advanceOne()
100105
kind = TTokenClass.gtEof;
101106
return;
102107
}
103-
if (m_source[start] == '#')
108+
if (m_source[start] == '#' && flags == NimrodScannerFlags.None)
104109
{
105110
kind = TTokenClass.gtComment;
106111
end = m_source.Length;
@@ -139,6 +144,7 @@ public void advanceOne()
139144
}
140145
else
141146
{
147+
142148
if (start >= m_source.Length)
143149
{
144150
kind = TTokenClass.gtEof;
@@ -152,6 +158,7 @@ public void advanceOne()
152158
var quoteIdx = m_source.IndexOf('"', searchStart);
153159
var parenIdx = m_source.IndexOf('(', searchStart);
154160
var starIdx = m_source.IndexOf('*', searchStart);
161+
var colonIdx = m_source.IndexOf(':', searchStart);
155162
end = spaceIdx;
156163
if (end == -1)
157164
{
@@ -163,7 +170,7 @@ public void advanceOne()
163170
{
164171
kind = TTokenClass.gtIdentifier;
165172
end = parenIdx;
166-
tokenEnd = parenIdx;
173+
tokenEnd = parenIdx - 1;
167174
}
168175
if (starIdx != -1 && starIdx < end)
169176
{
@@ -176,6 +183,11 @@ public void advanceOne()
176183
end = quoteIdx - 1;
177184
tokenEnd = quoteIdx;
178185
}
186+
if (colonIdx != -1 && colonIdx < end)
187+
{
188+
end = colonIdx;
189+
tokenEnd = colonIdx - 1;
190+
}
179191

180192
nextToken = m_source.Substring(start, (end - start));
181193

@@ -239,7 +251,10 @@ public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo, ref int state)
239251
case TTokenClass.gtStringLit:
240252
tokenInfo.Type = TokenType.String;
241253
tokenInfo.Color = TokenColor.String;
242-
flags ^= NimrodScannerFlags.NormalStringLit;
254+
if (!flags.HasFlag(NimrodScannerFlags.RawStringLit))
255+
{
256+
flags ^= NimrodScannerFlags.NormalStringLit;
257+
}
243258
break;
244259
case TTokenClass.gtLongStringLit:
245260
tokenInfo.Type = TokenType.String;
@@ -297,7 +312,7 @@ public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo, ref int state)
297312
state = (int)flags;
298313
tokenInfo.StartIndex = m_tokenizer.Start;
299314
tokenInfo.EndIndex = m_tokenizer.End;
300-
m_tokenizer.advanceOne();
315+
m_tokenizer.advanceOne(flags);
301316
return true;
302317
}
303318

0 commit comments

Comments
 (0)