/// <summary> /// Called on STYLENEEDED notification /// </summary> public static void Colorize(int startPos, int endPos) { var startLine = Sci.LineFromPosition(startPos); var startLinePos = Sci.GetLine(startLine).Position; var startingLineInfo = _lineInfo.ContainsKey(startLine) ? _lineInfo[startLine] : new LexerLineInfo(0, 0, false, false); ProTokenizer tok = new ProTokenizer(Sci.GetTextByRange(startLinePos, endPos), startLinePos, startLine, 0, startingLineInfo.CommentDepth, startingLineInfo.IncludeDepth, startingLineInfo.InDoubleQuoteString, startingLineInfo.InSimpleQuoteString, PushLineInfo); var vis = new SyntaxHighlightVisitor { NormedVariablesPrefixes = Config.Instance.NormedVariablesPrefixes.Split(',') }; vis.PreVisit(tok); tok.Accept(vis); vis.PostVisit(); }
public static void RunParserTests(string content) { // create unique temporary folder var testDir = Path.Combine(Npp.ConfigDirectory, "Tests", "RunParserTests_" + DateTime.Now.ToString("yy.MM.dd_HH-mm-ss-fff")); var perfFile = Path.Combine(testDir, "perfs.txt"); if (!Utils.CreateDirectory(testDir)) { return; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // LEXER //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% var outLocation = Path.Combine(testDir, "Lexer_out.txt"); //------------ var watch = Stopwatch.StartNew(); //------------ ProTokenizer proTokenizer = new ProTokenizer(content); //-------------- watch.Stop(); //-------------- OutputLexerVisitor lexerVisitor = new OutputLexerVisitor(); proTokenizer.Accept(lexerVisitor); Utils.FileWriteAllText(outLocation, lexerVisitor.Output.ToString()); File.AppendAllText(perfFile, @"LEXER DONE in " + watch.ElapsedMilliseconds + @" ms > nb items = " + lexerVisitor.NbItems + "\r\n"); //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // PARSER //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% outLocation = Path.Combine(testDir, "Parser_out.txt"); //------------ watch = Stopwatch.StartNew(); //------------ Parser parser = new Parser(proTokenizer, "", null, true, null); //-------------- watch.Stop(); //------------ OutputParserVisitor parserVisitor = new OutputParserVisitor(); parser.Accept(parserVisitor); Utils.FileWriteAllText(outLocation, parserVisitor.Output.ToString()); File.AppendAllText(perfFile, @"PARSER DONE in " + watch.ElapsedMilliseconds + @" ms > nb items = " + parser.ParsedItemsList.Count + "\r\n"); //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // LINE INFO //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% outLocation = Path.Combine(testDir, "LineInfo_out.txt"); StringBuilder lineInfo = new StringBuilder(); var i = 0; var dic = parser.LineInfo; var dic2 = ProCodeFormat.GetIndentation(parser.LineInfo); while (dic.ContainsKey(i)) { lineInfo.AppendLine(i + 1 + " > " + dic2[i].BlockDepth + " , " + dic2[i].ExtraStatementDepth + " , " + dic[i].BlockStack.Peek() + " , " + dic[i].BlockStack.Peek().ScopeType + " , " + dic[i].BlockStack.Peek().Name); i++; } Utils.FileWriteAllText(outLocation, lineInfo.ToString()); File.AppendAllText(perfFile, @"nb items in Line info = " + parser.LineInfo.Count + "\r\n"); UserCommunication.Notify("Done :<br>" + testDir.ToHtmlLink()); }
public Parser(ProTokenizer proTokenizer, string filePathBeingParsed, ParsedScopeBlock defaultScope, bool matchKnownWords, StringBuilder debugListOut) : this(proTokenizer.GetTokensList, filePathBeingParsed, defaultScope, matchKnownWords, debugListOut) { }