/// <summary> /// Highlights the tokens in the given lines in the given document. /// </summary> /// <param name="document">The document being highlighted.</param> /// <param name="lines">The lines to highlight.</param> public void MarkTokens(IDocument document, List <LineSegment> lines) { Dictionary <Int32, List <IToken> > dicTokens = new Dictionary <int, List <IToken> >(); AntlrLexerBase lex = LexerFactory.CreateLexer(document.TextContent, new ErrorTracker()); for (IToken tknToken = lex.NextToken(); tknToken.Type > -1; tknToken = lex.NextToken()) { if (!dicTokens.ContainsKey(tknToken.Line - 1)) { dicTokens[tknToken.Line - 1] = new List <IToken>(); } dicTokens[tknToken.Line - 1].Add(tknToken); } foreach (LineSegment lsgLine in lines) { lsgLine.Words = new List <TextWord>(); if (dicTokens.ContainsKey(lsgLine.LineNumber)) { foreach (IToken tknToken in dicTokens[lsgLine.LineNumber]) { HandleToken(document, tknToken); } } document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, lsgLine.LineNumber)); } }
/// <summary> /// Creates a CPL parser for the given code, using the given error tracker. /// </summary> /// <param name="p_strCode">The code be parsed.</param> /// <param name="p_ertErrorTracker">The error tracker to use to log /// parsing errors.</param> /// <returns>A CPL parser for the given code.</returns> public AntlrParserBase CreateParser(string p_strCode, ErrorTracker p_ertErrorTracker) { AntlrLexerBase lexLexer = CreateLexer(p_strCode, p_ertErrorTracker); CommonTokenStream ctsTokens = new CommonTokenStream(lexLexer); FONVCplParser prsParser = new FONVCplParser(ctsTokens, ""); prsParser.SetErrorTracker(p_ertErrorTracker); return(prsParser); }
/// <summary> /// Creates a Mod Script parser for the given code, using the given error tracker. /// </summary> /// <param name="p_strCode">The code be parsed.</param> /// <param name="p_ertErrorTracker">The error tracker to use to log /// parsing errors.</param> /// <returns>A Mod Script parser for the given code.</returns> public AntlrParserBase CreateParser(string p_strCode, ErrorTracker p_ertErrorTracker) { AntlrLexerBase lexLexer = CreateLexer(p_strCode, p_ertErrorTracker); CommonTokenStream ctsTokens = new CommonTokenStream(lexLexer); ModScriptParser prsParser = new ModScriptParser(ctsTokens); prsParser.ErrorTracker = p_ertErrorTracker; return(prsParser); }