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); } } }
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); }
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); } }
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); }
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); }
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); }