public void ReloadSettings() { _scanner = new Squirrel3Lexer(); SquirrelPropertyPage dp = (SquirrelPropertyPage)_package.GetDialogPage(typeof(SquirrelPropertyPage)); if (dp != null) { //squirrelVersion = dp.SquirrelVersion; _completiondb.Reset(squirrelVersion); squirrelParseLogging = dp.SquirrelParseLogging; //squirrelStudioVersion = dp.SquirrelStudioVersion; LoadCompletionFile(dp.SymbolsFile1); LoadCompletionFile(dp.SymbolsFile2); LoadCompletionFile(dp.SymbolsFile3); /*switch (squirrelVersion) * { * //case SquirrelVersion.Squirrel2: * // _scanner = new Squirrel2Lexer(); * break; * case SquirrelVersion.Squirrel3: * _scanner = new Squirrel3Lexer(); * break; * }*/ } }
public SQFile(SquirrelVersion version) { switch (version) { case SquirrelVersion.Squirrel2: _scanner = new Squirrel2Lexer(); break; case SquirrelVersion.Squirrel3: _scanner = new Squirrel3Lexer(); break; } ScopeSpan.iStartLine = 0; }
public Parser(SquirrelVersion sqVersion, bool sqParseLogging, string sqWorkingDirectory) { switch (sqVersion) { case SquirrelVersion.Squirrel2: lexer = new Squirrel2Lexer(); lexer.VsClassViewParserFlag = true; break; case SquirrelVersion.Squirrel3: lexer = new Squirrel3Lexer(); lexer.VsClassViewParserFlag = true; break; } parselogging = sqParseLogging; if (parselogging) { logger = new ParseLogger(sqWorkingDirectory); logger.Log(DateTime.Now.ToShortDateString().ToString() + " " + DateTime.Now.ToLongTimeString().ToString() + ":"); } }
public void Parse(SquirrelLexer scanner, string src) { Debug.WriteLine("Parse"); TokenInfo ti = new TokenInfo(); Stack <LexerTokenDesc> braces = new Stack <LexerTokenDesc>(); scanner.SetSource(src, 0); LexerTokenDesc td = new LexerTokenDesc(); bool hastokens = scanner.Lex(ref td); pairs.Clear(); hiddenRegions.Clear(); while (hastokens) { switch (td.token) { case (int)Token.MLINE_COMMENT: { TextSpan start = new TextSpan(); TextSpan end = new TextSpan(); start.iStartIndex = td.span.iStartIndex; start.iStartLine = td.span.iStartLine; start.iEndIndex = start.iStartIndex + 2; start.iEndLine = start.iStartLine; end.iStartIndex = td.span.iEndIndex; end.iStartLine = td.span.iEndLine; end.iEndIndex = end.iStartIndex + 2; end.iEndLine = end.iStartLine; pairs.Add(new LexPair(td.token, start, end)); hiddenRegions.Add(td.span); /* req.Sink.MatchPair(start, end, 1); * if (req.Sink.HiddenRegions) * { * req.Sink.ProcessHiddenRegions = true; * req.Sink.AddHiddenRegion(td.span); * }*/ } break; case '{': case '(': case '[': braces.Push(td); break; case '}': { LexerTokenDesc start; if (GetMatchingBracket('{', braces, out start)) { if (start.span.iStartLine != td.span.iEndLine) { TextSpan hideSpan = new TextSpan(); hideSpan.iStartIndex = start.span.iStartIndex; hideSpan.iStartLine = start.span.iStartLine; hideSpan.iEndIndex = td.span.iEndIndex; hideSpan.iEndLine = td.span.iEndLine; //req.Sink.ProcessHiddenRegions = true; //req.Sink.AddHiddenRegion(hideSpan); hiddenRegions.Add(hideSpan); } //req.Sink.MatchPair(start.span, td.span, 1); pairs.Add(new LexPair(td.token, start.span, td.span)); } } break; case ')': { LexerTokenDesc start; if (GetMatchingBracket('(', braces, out start)) { pairs.Add(new LexPair(td.token, start.span, td.span)); } } break; case ']': { LexerTokenDesc start; if (GetMatchingBracket('[', braces, out start)) { pairs.Add(new LexPair(td.token, start.span, td.span)); } } break; } hastokens = scanner.Lex(ref td); } }