/// <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);
        }
Example #3
0
        /// <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);
        }