Ejemplo n.º 1
0
 private void ParseCaseStatement(IStatementInfo Info, ISyntaxInfos Infos, int Level)
 {
     if (this.SkipToSymbol(":"))
     {
         if (this.IsBlockStart())
         {
             base.ParseBlock(Infos, Info, Level, null, this.parseStatementsProc);
         }
         else
         {
             Info.DeclarationSize = new Size(this.currentPos - Info.Position.X, base.LineIndex - Info.Position.Y);
             Info.StartPoint      = new Point(base.PrevPos, base.PrevLine);
             int num1 = 1;
             while (!base.Eof && !this.IsBlockEnd(ref num1))
             {
                 if ((base.Token == 2) && ((base.TokenString == "case") || (base.TokenString == "default")))
                 {
                     break;
                 }
                 this.ParseStatements(Info, Infos, Level + 1);
             }
             Info.EndPoint = new Point(base.PrevPos, base.PrevLine);
             Infos.Add(Info);
         }
     }
 }
Ejemplo n.º 2
0
        private IStatementInfo ParseStatement(string Name, ISyntaxInfos Infos, int Level)
        {
            string         text1;
            IStatementInfo info1 = null;

            if ((text1 = Name) != null)
            {
                text1 = string.IsInterned(text1);
                if (text1 != "if")
                {
                    if (text1 == "select")
                    {
                        info1 = new VbCaseStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
                        this.ParseCaseStatement(info1, Infos, Level);
                        Infos.Add(info1);
                        return(info1);
                    }
                }
                else
                {
                    info1 = new VbIfStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
                    this.ParseIfElseStatement(info1, Infos, Level);
                    Infos.Add(info1);
                    return(info1);
                }
            }
            info1 = new VbStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
            base.SkipToNextLine();
            base.ParseBlock(Infos, info1, Level, null, this.parseStatementsProc);
            info1.EndPoint = new Point(base.PrevPos, base.PrevLine);
            return(info1);
        }
Ejemplo n.º 3
0
 private void ParseIfElseStatement(IStatementInfo Info, ISyntaxInfos Infos, int Level)
 {
     if ((base.Token == 2) && (base.TokenString == "else"))
     {
         this.ParseStatement(base.TokenString, Infos, Level);
         ((CsIfStatementInfo)Info).IfEndPoint = Info.EndPoint;
         Info.EndPoint = new Point(base.PrevPos, base.PrevLine);
     }
 }
Ejemplo n.º 4
0
        private IStatementInfo ParseStatement(string Name, ISyntaxInfos Infos, int Level)
        {
            string         text1;
            IStatementInfo info1 = null;

            if ((text1 = Name) != null)
            {
                text1 = string.IsInterned(text1);
                if (text1 != "if")
                {
                    if ((text1 == "case") || (text1 == "default"))
                    {
                        info1 = new CsStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
                        this.ParseCaseStatement(info1, Infos, Level);
                        return(info1);
                    }
                }
                else
                {
                    info1 = new CsIfStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
                    goto Label_0091;
                }
            }
            info1 = new CsStatementInfo(Name, new Point(this.tokenPos, base.LineIndex), Level);
Label_0091:
            this.NextValidToken();
            if (base.IsSymbolToken("("))
            {
                base.SkipBrackets(")");
            }
            if ((base.Token == 2) && (base.GetReswordToken(base.TokenString) == 2))
            {
                info1.StartPoint      = new Point(base.PrevPos, base.PrevLine);
                info1.DeclarationSize = new Size(this.tokenPos - info1.Position.X, base.LineIndex - info1.Position.Y);
                if ((Name == "else") && (base.TokenString == "if"))
                {
                    IStatementInfo info2 = this.ParseStatement(base.TokenString, Infos, Level);
                    ((CsIfStatementInfo)info2).ElseIfPoint = new Point(info1.Position.X + info1.DeclarationSize.Width, info1.Position.Y + info1.DeclarationSize.Height);
                }
                else
                {
                    this.ParseStatement(base.TokenString, Infos, Level + 1);
                }
                info1.EndPoint = new Point(base.PrevPos, base.PrevLine);
                Infos.Add(info1);
            }
            else
            {
                base.ParseBlock(Infos, info1, Level, null, this.parseStatementsProc);
            }
            if (info1 is CsIfStatementInfo)
            {
                this.ParseIfElseStatement(info1, Infos, Level);
            }
            return(info1);
        }
Ejemplo n.º 5
0
        private void ParseIfElseStatement(IStatementInfo Info, ISyntaxInfos Infos, int Level)
        {
            int    num1  = 1;
            string text1 = string.Empty;

            base.SkipToNextLine();
            while (!base.Eof && !this.IsBlockEnd(ref num1))
            {
                if (base.Token == 2)
                {
                    string text2;
                    text1 = base.TokenString.ToLower();
                    if ((text2 = text1) != null)
                    {
                        text2 = string.IsInterned(text2);
                        if (text2 != "else")
                        {
                            if (text2 == "elseif")
                            {
                                goto Label_0070;
                            }
                        }
                        else
                        {
                            ((VbIfStatementInfo)Info).ElsePt = new Point(this.tokenPos, base.LineIndex);
                        }
                    }
                }
                goto Label_0097;
Label_0070:
                ((VbIfStatementInfo)Info).ElseIfPoints.Add(new Point(this.tokenPos, base.LineIndex));
Label_0097:
                this.ParseStatements(Info, Infos, Level + 1);
            }
            if (this.IsBlockEnd(base.TokenString))
            {
                this.NextValidToken();
            }
            this.NextValidToken();
            Info.HasBlock = true;
            Info.EndPoint = new Point(base.PrevPos, base.PrevLine);
            Infos.Add(Info);
        }
Ejemplo n.º 6
0
        private void ParseCaseStatement(IStatementInfo Info, ISyntaxInfos Infos, int Level)
        {
            int    num1  = 1;
            string text1 = string.Empty;

            base.SkipToNextLine();
            while (!base.Eof && !this.IsBlockEnd(ref num1))
            {
                if ((base.Token == 2) && (base.TokenString.ToLower() == "case"))
                {
                    ((VbCaseStatementInfo)Info).CasePoints.Add(new Point(this.tokenPos, base.LineIndex));
                }
                this.ParseStatements(Info, Infos, Level + 1);
            }
            if (this.IsBlockEnd(base.TokenString))
            {
                this.NextValidToken();
            }
            this.NextValidToken();
            Info.HasBlock = true;
            Info.EndPoint = new Point(base.PrevPos, base.PrevLine);
        }