示例#1
0
        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;
            }
示例#3
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() + ":");
            }
        }
示例#4
0
        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);
            }
        }