private static void TestScanner(string line, TestTokenInfo[] tokens) { var scanner = new HamlScanner(); string testLine = ""; foreach (TestTokenInfo token in tokens) { token.StartIndex = testLine.Length; token.EndIndex = token.StartIndex + token.Token.Length -1; testLine += token.Token; } Assert.AreEqual(line, testLine, "Test line doesn't match tokens"); scanner.SetSource(line, 0); var tokenInfo = new TokenInfo(); int state = 0; int tokenNum = 0; while (scanner.ScanTokenAndProvideInfoAboutIt(tokenInfo, ref state)) { TestTokenInfo token = tokens[tokenNum]; AssertAreEqual(token, tokenInfo, string.Format("Token {0}({1})", tokenNum, token.Token)); tokenNum++; } Assert.AreEqual(tokens.Length, tokenNum, "Should have matched {0} tokens but actually matched {1}", tokens.Length, tokenNum); }
/// <summary> /// Create and return instantiation of a parser represented by RegularExpressionScanner object. /// </summary> /// <param name="buffer">An <see cref="IVsTextLines"/> represents lines of source to parse.</param> /// <returns>Returns a RegularExpressionScanner object</returns> public override IScanner GetScanner(IVsTextLines buffer) { if (_scanner == null) { _scanner = new HamlScanner(); } return _scanner; }