public DefinedCharacterSet(string Name, CharacterSetBuild CharSet) : base(CharSet) { this.m_Name = ""; this.m_Definition = ""; this.m_Comment = ""; this.m_Type = ""; this.Dependacy = new NumberSet(new int[0]); this.m_Name = Name.Trim(); }
private bool LoadVer1(SimpleDB.Reader CGT) { int num3; bool flag2 = true; while (!(CGT.EndOfFile() | !flag2)) { int num7; int num8; int num10; int num14; int num15; CGT.GetNextRecord(); switch (CGT.RetrieveByte()) { case 0x43: { int num5 = CGT.RetrieveInt16(); CharacterSetBuild build5 = new CharacterSetBuild(CGT.RetrieveString()) { TableIndex = num5 }; base.m_CharSet[num5] = build5; continue; } case 0x44: { FAState state = new FAState(); num10 = CGT.RetrieveInt16(); bool flag3 = CGT.RetrieveBoolean(); int num9 = CGT.RetrieveInt16(); CGT.RetrieveEntry(); if (!flag3) { goto Label_02DC; } base.m_DFA[num10] = new FAStateBuild((SymbolBuild)base.m_Symbol[num9]); goto Label_0337; } case 0x49: { base.m_DFA.InitialState = (short)CGT.RetrieveInt16(); base.m_LALR.InitialState = (short)CGT.RetrieveInt16(); continue; } case 0x4c: num14 = CGT.RetrieveInt16(); CGT.RetrieveEntry(); base.m_LALR[num14] = new LRStateBuild(); goto Label_03BA; case 80: { base.m_Properties["Name"].Value = CGT.RetrieveString(); base.m_Properties["Version"].Value = CGT.RetrieveString(); base.m_Properties["Author"].Value = CGT.RetrieveString(); base.m_Properties["About"].Value = CGT.RetrieveString(); base.m_Properties["Case Sensitive"].Value = Conversions.ToString(CGT.RetrieveBoolean()); num3 = CGT.RetrieveInt16(); continue; } case 0x52: { num7 = CGT.RetrieveInt16(); int num6 = CGT.RetrieveInt16(); CGT.RetrieveEntry(); base.m_Production[num7] = new ProductionBuild((SymbolBuild)base.m_Symbol[num6], (short)num7); goto Label_0272; } case 0x53: { int tableIndex = CGT.RetrieveInt16(); string name = CGT.RetrieveString(); SymbolType type = (SymbolType)CGT.RetrieveInt16(); base.m_Symbol[tableIndex] = new SymbolBuild(name, type, tableIndex); continue; } case 0x54: { base.m_Symbol = new SymbolBuildList(CGT.RetrieveInt16()); base.m_CharSet = new CharacterSetBuildList(CGT.RetrieveInt16()); base.m_Production = new ProductionBuildList(CGT.RetrieveInt16()); base.m_DFA = new FAStateBuildList(CGT.RetrieveInt16()); base.m_LALR = new LRStateBuildList(CGT.RetrieveInt16()); continue; } default: goto Label_03CB; } Label_0244: num8 = CGT.RetrieveInt16(); base.m_Production[num7].Handle().Add(base.m_Symbol[num8]); Label_0272: if (!CGT.RecordComplete()) { goto Label_0244; } continue; Label_02DC: base.m_DFA[num10] = new FAStateBuild(); Label_0337: while (!CGT.RecordComplete()) { int num11 = CGT.RetrieveInt16(); int target = CGT.RetrieveInt16(); CGT.RetrieveEntry(); base.m_DFA[num10].AddEdge(new FAEdgeBuild((CharacterSetBuild)base.m_CharSet[num11], target)); } continue; Label_0370: num15 = CGT.RetrieveInt16(); int num13 = CGT.RetrieveInt16(); int num16 = CGT.RetrieveInt16(); CGT.RetrieveEntry(); base.m_LALR[num14].Add(new LRAction(base.m_Symbol[num15], (LRActionType)num13, (short)num16)); Label_03BA: if (!CGT.RecordComplete()) { goto Label_0370; } continue; Label_03CB: flag2 = false; } this.StartSymbol = base.m_Symbol[num3]; SymbolBuild build3 = null; SymbolBuild build2 = null; SymbolBuild build = null; int num19 = base.m_Symbol.Count() - 1; for (int i = 0; i <= num19; i++) { SymbolBuild build4 = (SymbolBuild)base.m_Symbol[i]; switch (((int)build4.Type)) { case 2: if (build == null) { build = build4; } break; case 4: build3 = build4; break; case 5: build2 = build4; break; } } if (build3 != null) { GroupBuild item = new GroupBuild(); int num17 = base.m_Group.Add(item); item.TableIndex = 0; item.Name = "Comment Block"; item.Container = build; item.Nesting.Add(item.TableIndex); item.Advance = AdvanceMode.Token; item.Ending = EndingMode.Closed; item.Start = build3; item.End = build2; item.Start.Group = item; item.End.Group = item; item.NestingNames = "All"; } return(flag2); }
private bool LoadVer5(SimpleDB.Reader EGT) { bool flag2; try { flag2 = true; while (!(EGT.EndOfFile() | !flag2)) { GroupBuild build; int num3; int num4; CharacterSetBuild build2; int num5; int num7; int num8; int num10; int num14; int num15; GroupBuild build3; int num17; EGT.GetNextRecord(); ParseTables.EGTRecord record = (ParseTables.EGTRecord)EGT.RetrieveByte(); switch (((byte)(((int)record) - 0x44))) { case 0: { num10 = EGT.RetrieveInt16(); bool flag3 = EGT.RetrieveBoolean(); int num9 = EGT.RetrieveInt16(); EGT.RetrieveEntry(); if (!flag3) { goto Label_0423; } base.m_DFA[num10] = new FAStateBuild((SymbolBuild)base.m_Symbol[num9]); goto Label_0483; } case 5: { base.m_DFA.InitialState = (short)EGT.RetrieveInt16(); base.m_LALR.InitialState = (short)EGT.RetrieveInt16(); continue; } case 8: num14 = EGT.RetrieveInt16(); EGT.RetrieveEntry(); base.m_LALR[num14] = new LRStateBuild(); goto Label_0506; case 14: { num7 = EGT.RetrieveInt16(); int num6 = EGT.RetrieveInt16(); EGT.RetrieveEntry(); base.m_Production[num7] = new ProductionBuild((SymbolBuild)base.m_Symbol[num6], (short)num7); goto Label_03C0; } case 15: { int tableIndex = EGT.RetrieveInt16(); string name = EGT.RetrieveString(); SymbolType type = (SymbolType)EGT.RetrieveInt16(); base.m_Symbol[tableIndex] = new SymbolBuild(name, type, tableIndex); continue; } case 0x1f: build2 = new CharacterSetBuild(); num5 = EGT.RetrieveInt16(); EGT.RetrieveInt16(); EGT.RetrieveInt16(); EGT.RetrieveEntry(); goto Label_0323; case 0x23: build = new GroupBuild(); build3 = build; num3 = EGT.RetrieveInt16(); build3.Name = EGT.RetrieveString(); build3.Container = base.m_Symbol[EGT.RetrieveInt16()]; build3.Start = base.m_Symbol[EGT.RetrieveInt16()]; build3.End = base.m_Symbol[EGT.RetrieveInt16()]; build3.Advance = (AdvanceMode)EGT.RetrieveInt16(); build3.Ending = (EndingMode)EGT.RetrieveInt16(); EGT.RetrieveEntry(); num17 = EGT.RetrieveInt16(); num4 = 1; goto Label_029B; case 0x2c: { EGT.RetrieveInt16(); string str = EGT.RetrieveString(); string str2 = EGT.RetrieveString(); base.m_Properties.Add(str, str2); continue; } case 0x30: { base.m_Symbol = new SymbolBuildList(EGT.RetrieveInt16()); base.m_CharSet = new CharacterSetBuildList(EGT.RetrieveInt16()); base.m_Production = new ProductionBuildList(EGT.RetrieveInt16()); base.m_DFA = new FAStateBuildList(EGT.RetrieveInt16()); base.m_LALR = new LRStateBuildList(EGT.RetrieveInt16()); base.m_Group = new GroupBuildList(EGT.RetrieveInt16()); continue; } default: goto Label_0517; } Label_0281: build3.Nesting.Add(EGT.RetrieveInt16()); num4++; Label_029B: if (num4 <= num17) { goto Label_0281; } build3 = null; build.Container.Group = build; build.Start.Group = build; build.End.Group = build; base.m_Group[num3] = build; continue; Label_030E: build2.AddRange(EGT.RetrieveInt16(), EGT.RetrieveInt16()); Label_0323: if (!EGT.RecordComplete()) { goto Label_030E; } build2.TableIndex = num5; base.m_CharSet[num5] = build2; continue; Label_0392: num8 = EGT.RetrieveInt16(); base.m_Production[num7].Handle().Add(base.m_Symbol[num8]); Label_03C0: if (!EGT.RecordComplete()) { goto Label_0392; } continue; Label_0423: base.m_DFA[num10] = new FAStateBuild(); Label_0483: while (!EGT.RecordComplete()) { int num11 = EGT.RetrieveInt16(); int target = EGT.RetrieveInt16(); EGT.RetrieveEntry(); base.m_DFA[num10].Edges().Add(new FAEdgeBuild((CharacterSetBuild)base.m_CharSet[num11], target)); } continue; Label_04BC: num15 = EGT.RetrieveInt16(); int num13 = EGT.RetrieveInt16(); int num16 = EGT.RetrieveInt16(); EGT.RetrieveEntry(); base.m_LALR[num14].Add(new LRAction(base.m_Symbol[num15], (LRActionType)num13, (short)num16)); Label_0506: if (!EGT.RecordComplete()) { goto Label_04BC; } continue; Label_0517: flag2 = false; throw new ParserException("File Error. A record of type '" + Conversions.ToString(Strings.ChrW((int)record)) + "' was read. This is not a valid code."); } EGT.Close(); } catch (Exception exception1) { Exception inner = exception1; throw new ParserException(inner.Message, inner, "LoadTables"); } return(flag2); }
public static void Build() { short num3; NumberSet nFAList = new NumberSet(new int[0]); NumberSet set2 = new NumberSet(new int[0]); Notify.Started("Computing DFA States"); SetupForNFA(); BuilderApp.Mode = BuilderApp.ProgramMode.BuildingNFA; short num5 = (short)(BuilderApp.BuildTables.Symbol.Count() - 1); for (num3 = 0; num3 <= num5; num3 = (short)(num3 + 1)) { SymbolBuild sym = BuilderApp.BuildTables.Symbol[num3]; if (sym.UsesDFA) { Notify.Text = sym.Name; CreateNFAStates(sym); } } BuilderApp.Mode = BuilderApp.ProgramMode.NFAClosure; short num6 = (short)(NFA.Count - 1); for (num3 = 0; num3 <= num6; num3 = (short)(num3 + 1)) { NumberSet reachable = new NumberSet(new int[0]); reachable.Add(new int[] { num3 }); ClosureNFA(reachable); NFA[num3].NFAClosure = reachable; } BuilderApp.BuildTables.CharSet.Clear(); if (NFA.Count <= 1) { BuilderApp.Log.Add(SysLogSection.DFA, SysLogAlert.Critical, "There are no terminals in the grammar"); } else { short num2; BuilderApp.Log.Add(SysLogSection.DFA, SysLogAlert.Detail, "The initial Nondeterministic Finite Automata has " + Conversions.ToString(NFA.Count) + " states"); BuilderApp.BuildTables.DFA.Clear(); BuilderApp.Mode = BuilderApp.ProgramMode.NFACase; SetupMapCaseCharTables(BuilderApp.BuildTables.Properties["Case Sensitive"].Value.ToUpper() == "TRUE", BuilderApp.GetParamCharMapping()); BuilderApp.Mode = BuilderApp.ProgramMode.BuildingDFA; nFAList.Add(new int[] { Root }); StartState = BuildDFAState(nFAList); short num7 = (short)(BuilderApp.BuildTables.DFA.Count - 1); for (num3 = 0; num3 <= num7; num3 = (short)(num3 + 1)) { short num8 = (short)(BuilderApp.BuildTables.DFA[num3].Edges().Count() - 1); num2 = 0; while (num2 <= num8) { FAEdgeBuild build3 = BuilderApp.BuildTables.DFA[num3].Edges()[num2]; CharacterSetBuild characters = build3.Characters; build3.Characters = characters; short num4 = BuilderApp.AddCharacterSet(characters); BuilderApp.BuildTables.DFA[num3].Edges()[num2].Characters = BuilderApp.BuildTables.CharSet[num4]; num2 = (short)(num2 + 1); } } short num9 = (short)(BuilderApp.BuildTables.DFA.Count - 1); for (num3 = 0; num3 <= num9; num3 = (short)(num3 + 1)) { FAStateBuild build = BuilderApp.BuildTables.DFA[num3]; if (build.AcceptList.Count() == 0) { build.Accept = null; } else if (build.AcceptList.Count() == 1) { build.Accept = BuilderApp.BuildTables.Symbol[build.AcceptList[0].SymbolIndex]; } else { FAAccept accept = build.AcceptList[0]; set2.Clear(); set2.Add(new int[] { accept.SymbolIndex }); short priority = accept.Priority; short num10 = (short)(build.AcceptList.Count() - 1); num2 = 1; while (num2 <= num10) { accept = build.AcceptList[num2]; if (accept.Priority == priority) { set2.Add(new int[] { accept.SymbolIndex }); } else if (accept.Priority < priority) { set2.Clear(); set2.Add(new int[] { accept.SymbolIndex }); priority = accept.Priority; } num2 = (short)(num2 + 1); } build.AcceptList.Clear(); short num11 = (short)(set2.Count() - 1); for (num2 = 0; num2 <= num11; num2 = (short)(num2 + 1)) { build.AcceptList.Add((short)set2[num2], priority); } if (set2.Count() == 1) { build.Accept = BuilderApp.BuildTables.Symbol[set2[0]]; } } } CheckErrorsDFA(); Notify.Completed("DFA States Completed"); } }
private static short BuildDFAState(NumberSet NFAList) { int num4; NumberSet nFAList = new NumberSet(new int[0]); FAStateBuild state = new FAStateBuild(); int num8 = NFAList.Count() - 1; for (num4 = 0; num4 <= num8; num4++) { state.NFAStates.UnionWith(NFA[NFAList[num4]].NFAClosure); } short num6 = DFAStateNumber(state); if (num6 == -1) { int num3; FAStateBuild build4; Notify.Counter++; num6 = AddDFAState(state); int num9 = state.NFAStates.Count() - 1; for (num4 = 0; num4 <= num9; num4++) { build4 = NFA[state.NFAStates[num4]]; int num10 = build4.AcceptList.Count() - 1; num3 = 0; while (num3 <= num10) { FAAccept item = build4.AcceptList[num3]; state.AcceptList.Add(item); num3++; } } NumberSet set2 = new NumberSet(new int[0]); FAEdgeList list = new FAEdgeList(); int num11 = state.NFAStates.Count() - 1; for (num4 = 0; num4 <= num11; num4++) { build4 = NFA[state.NFAStates[num4]]; int num12 = build4.Edges().Count() - 1; num3 = 0; while (num3 <= num12) { if (build4.Edges()[num3].Characters.Count() >= 1) { list.Add(build4.Edges()[num3]); set2.Add(new int[] { build4.Edges()[num3].Target }); } num3++; } } if (set2.Count() >= 1) { CharacterSetBuild build; FAEdgeBuild build3; CharacterSetBuild[] buildArray = new CharacterSetBuild[(set2.Count() - 1) + 1]; int num13 = set2.Count() - 1; for (num4 = 0; num4 <= num13; num4++) { Notify.Analyzed++; build = new CharacterSetBuild(); short num7 = (short)set2[num4]; int num14 = list.Count() - 1; num3 = 0; while (num3 <= num14) { build3 = (FAEdgeBuild)list[num3]; if (build3.Target == num7) { build.UnionWith(build3.Characters); } num3++; } int num15 = list.Count() - 1; for (num3 = 0; num3 <= num15; num3++) { build3 = (FAEdgeBuild)list[num3]; if (build3.Target != num7) { build.DifferenceWith(build3.Characters); } } buildArray[num4] = build; } CharacterSetBuild build5 = new CharacterSetBuild(); int num16 = list.Count() - 1; num3 = 0; while (num3 <= num16) { build5.UnionWith(list[num3].Characters); num3++; } int num17 = set2.Count() - 1; for (num4 = 0; num4 <= num17; num4++) { build5.DifferenceWith(buildArray[num4]); } int num18 = set2.Count() - 1; for (num4 = 0; num4 <= num18; num4++) { if (buildArray[num4].Count() >= 1) { nFAList = new NumberSet(new int[0]); nFAList.Add(new int[] { set2[num4] }); Notify.Analyzed++; state.AddEdge(buildArray[num4], BuildDFAState(nFAList)); } } int num19 = build5.Count() - 1; for (num4 = 0; num4 <= num19; num4++) { nFAList = new NumberSet(new int[0]); int number = build5[num4]; int num20 = list.Count() - 1; for (num3 = 0; num3 <= num20; num3++) { build3 = (FAEdgeBuild)list[num3]; if (build3.Characters.Contains(number)) { nFAList.Add(new int[] { build3.Target }); } } if (nFAList.Count() >= 1) { build = new CharacterSetBuild(); build.Add(new int[] { number }); Notify.Analyzed++; state.AddEdge(build, BuildDFAState(nFAList)); } } } return(num6); } return(num6); }
// Methods private static object CreateNewObject(Reduction TheReduction) { object left = null; Reduction reduction2; int num2; object[] objArray; object[] objArray2; bool[] flagArray; RegExpItem item4; RegExpSeq seq5; Reduction reduction = TheReduction; switch (reduction.Parent.TableIndex) { case 13: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 14: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 15: { GrammarValueList instance = (GrammarValueList)reduction.get_Data(0); objArray = new object[1]; reduction2 = reduction; num2 = 3; objArray[0] = RuntimeHelpers.GetObjectValue(reduction2.get_Data(num2)); objArray2 = objArray; flagArray = new bool[] { true }; NewLateBinding.LateCall(instance, null, "Add", objArray2, null, null, flagArray, true); if (flagArray[0]) { reduction2.set_Data(num2, RuntimeHelpers.GetObjectValue(objArray2[0])); } left = instance; break; } case 0x10: { GrammarValueList list2 = new GrammarValueList(); objArray2 = new object[1]; reduction2 = reduction; num2 = 0; objArray2[0] = RuntimeHelpers.GetObjectValue(reduction2.get_Data(num2)); objArray = objArray2; flagArray = new bool[] { true }; NewLateBinding.LateCall(list2, null, "Add", objArray, null, null, flagArray, true); if (flagArray[0]) { reduction2.set_Data(num2, RuntimeHelpers.GetObjectValue(objArray[0])); } left = list2; break; } case 0x11: left = Conversions.ToString(reduction.get_Data(0)) + " " + reduction.get_Data(1).ToString(); break; case 0x12: left = RuntimeHelpers.GetObjectValue(reduction.get_Data(0)); break; case 0x13: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 20: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 0x15: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 0x16: { string name = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); Grammar.AddProperty(name, ((GrammarValueList)reduction.get_Data(3)).ToString(), reduction[0].Position.Line); break; } case 0x17: { GrammarValueList list4 = (GrammarValueList)reduction.get_Data(0); GrammarValueList list = (GrammarValueList)reduction.get_Data(3); list4.Add(list); left = list4; break; } case 0x18: left = RuntimeHelpers.GetObjectValue(reduction.get_Data(0)); break; case 0x19: { GrammarAttribAssign assign = new GrammarAttribAssign { Name = Conversions.ToString(reduction.get_Data(0)), Values = (GrammarAttribList)reduction.get_Data(4), Line = reduction[2].Position.Line }; Grammar.AddSymbolAttrib(assign); break; } case 0x1a: { GrammarAttribAssign assign2 = new GrammarAttribAssign { Name = Conversions.ToString(Operators.ConcatenateObject(Operators.ConcatenateObject(reduction.get_Data(0), " "), reduction.get_Data(1))), Values = (GrammarAttribList)reduction.get_Data(5), Line = reduction[3].Position.Line }; Grammar.AddGroupAttrib(assign2); break; } case 0x1b: { GrammarAttribList list6 = (GrammarAttribList)reduction.get_Data(0); list6.Add((GrammarAttrib)reduction.get_Data(3)); left = list6; break; } case 0x1c: { GrammarAttribList list7 = new GrammarAttribList(); list7.Add((GrammarAttrib)reduction.get_Data(0)); left = list7; break; } case 0x1d: { GrammarAttrib attrib = new GrammarAttrib { Name = Conversions.ToString(reduction.get_Data(0)) }; objArray2 = new object[1]; reduction2 = reduction; num2 = 2; objArray2[0] = RuntimeHelpers.GetObjectValue(reduction2.get_Data(num2)); objArray = objArray2; flagArray = new bool[] { true }; NewLateBinding.LateCall(attrib.List, null, "Add", objArray, null, null, flagArray, true); if (flagArray[0]) { reduction2.set_Data(num2, RuntimeHelpers.GetObjectValue(objArray[0])); } attrib.IsSet = false; left = attrib; break; } case 30: { GrammarAttrib attrib2 = new GrammarAttrib { Name = Conversions.ToString(reduction.get_Data(0)), List = (GrammarValueList)reduction.get_Data(3), IsSet = true }; left = attrib2; break; } case 0x1f: { Grammar.GrammarSet charSet = new Grammar.GrammarSet { Name = Conversions.ToString(reduction.get_Data(1)), Exp = (ISetExpression)reduction.get_Data(5), Line = reduction[0].Position.Line }; Grammar.AddUserSet(charSet); break; } case 0x20: left = new SetExp((ISetExpression)reduction.get_Data(0), '+', (ISetExpression)reduction.get_Data(3)); break; case 0x21: left = new SetExp((ISetExpression)reduction.get_Data(0), '-', (ISetExpression)reduction.get_Data(3)); break; case 0x22: left = RuntimeHelpers.GetObjectValue(reduction.get_Data(0)); break; case 0x23: { reduction2 = reduction; num2 = 0; string fullText = Conversions.ToString(reduction2.get_Data(num2)); Grammar.WarnRegexSetLiteral(fullText, reduction[0].Position.Line); reduction2.set_Data(num2, fullText); left = new SetItem(new CharacterSetBuild(Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))))); break; } case 0x24: Grammar.AddUsedSetName(Conversions.ToString(reduction.get_Data(1)), reduction[0].Position.Line); left = new SetItem(SetItem.SetType.Name, Conversions.ToString(reduction.get_Data(1))); break; case 0x25: { CharacterSetBuild build = (CharacterSetBuild)reduction.get_Data(1); left = new SetItem(build); break; } case 0x26: left = Operators.ConcatenateObject(Operators.ConcatenateObject(reduction.get_Data(0), " "), reduction.get_Data(1)); break; case 0x27: left = RuntimeHelpers.GetObjectValue(reduction.get_Data(0)); break; case 40: { CharacterSetBuild build2 = (CharacterSetBuild)reduction.get_Data(0); CharacterSetRange range = (CharacterSetRange)reduction.get_Data(3); build2.AddRange(range.First, range.Last); left = build2; break; } case 0x29: { CharacterSetBuild build3 = new CharacterSetBuild(); CharacterSetRange range2 = (CharacterSetRange)reduction.get_Data(0); build3.AddRange(range2.First, range2.Last); left = build3; break; } case 0x2a: left = new CharacterSetRange(Conversions.ToInteger(reduction.get_Data(0)), Conversions.ToInteger(reduction.get_Data(0))); break; case 0x2b: left = new CharacterSetRange(Conversions.ToInteger(reduction.get_Data(0)), Conversions.ToInteger(reduction.get_Data(2))); break; case 0x2c: left = Grammar.GetHexValue(Conversions.ToString(reduction.get_Data(0))); if (Conversions.ToBoolean(Operators.OrObject(Operators.CompareObjectLess(left, 0, false), Operators.CompareObjectGreater(left, 0xffff, false)))) { BuilderApp.Log.Add(SysLogSection.Grammar, SysLogAlert.Critical, "Invalid set constant value", Conversions.ToString(Operators.ConcatenateObject(Operators.ConcatenateObject("The value '", reduction.get_Data(0)), "' is not valid.")), Conversions.ToString(reduction[0].Position.Line)); } break; case 0x2d: left = Grammar.GetDecValue(Conversions.ToString(reduction.get_Data(0))); if (Conversions.ToBoolean(Operators.OrObject(Operators.CompareObjectLess(left, 0, false), Operators.CompareObjectGreater(left, 0xffff, false)))) { BuilderApp.Log.Add(SysLogSection.Grammar, SysLogAlert.Critical, "Invalid set constant value", Conversions.ToString(Operators.ConcatenateObject(Operators.ConcatenateObject("The value '", reduction.get_Data(0)), "' is not valid.")), Conversions.ToString(reduction[0].Position.Line)); } break; case 0x2e: { string str3 = Conversions.ToString(reduction.get_Data(1)); string str6 = str3.ToUpper(); if (((str6 == "LINE") || (str6 == "START")) || (str6 == "END")) { Grammar.GrammarGroup g = new Grammar.GrammarGroup(Conversions.ToString(reduction.get_Data(0)), Conversions.ToString(reduction.get_Data(1)), Conversions.ToString(reduction.get_Data(4)), reduction[1].Position.Line); Grammar.AddGroup(g); } else { BuilderApp.Log.Add(SysLogSection.Grammar, SysLogAlert.Critical, "Invalid group usage value", "The usage value '" + str3 + "' is not valid. It can be either Start, End or Line.", Conversions.ToString(reduction[1].Position.Line)); } break; } case 0x2f: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 0x30: left = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))); break; case 0x31: { Grammar.GrammarSymbol sym = new Grammar.GrammarSymbol { Name = Conversions.ToString(reduction.get_Data(0)), Exp = (RegExp)reduction.get_Data(3), Line = reduction[2].Position.Line, Type = SymbolType.Content }; Grammar.AddTerminalHead(sym); break; } case 50: { RegExp exp = (RegExp)reduction.get_Data(0); RegExpSeq seq = (RegExpSeq)reduction.get_Data(3); seq.Priority = -1; exp.Add(seq); left = exp; break; } case 0x33: { RegExp exp2 = new RegExp(); RegExpSeq seq2 = (RegExpSeq)reduction.get_Data(0); seq2.Priority = -1; exp2.Add(seq2); left = exp2; break; } case 0x34: { RegExpSeq seq3 = (RegExpSeq)reduction.get_Data(0); reduction2 = reduction; num2 = 1; item4 = (RegExpItem)reduction2.get_Data(num2); seq3.Add(item4); reduction2.set_Data(num2, item4); left = seq3; break; } case 0x35: { RegExpSeq seq4 = new RegExpSeq(); reduction2 = reduction; num2 = 0; item4 = (RegExpItem)reduction2.get_Data(num2); seq4.Add(item4); reduction2.set_Data(num2, item4); left = seq4; break; } case 0x36: { SetItem data = (SetItem)reduction.get_Data(0); left = new RegExpItem(data, Conversions.ToString(reduction.get_Data(1))); break; } case 0x37: { SetItem item2 = new SetItem(SetItem.SetType.Sequence, Grammar.TokenText(Conversions.ToString(reduction.get_Data(0)))); left = new RegExpItem(item2, Conversions.ToString(reduction.get_Data(1))); break; } case 0x38: { SetItem item3 = new SetItem(SetItem.SetType.Sequence, Conversions.ToString(reduction.get_Data(0))); left = new RegExpItem(item3, Conversions.ToString(reduction.get_Data(1))); break; } case 0x39: left = new RegExpItem(RuntimeHelpers.GetObjectValue(reduction.get_Data(1)), Conversions.ToString(reduction.get_Data(3))); break; case 0x3a: { RegExp exp3 = (RegExp)reduction.get_Data(0); reduction2 = reduction; num2 = 2; seq5 = (RegExpSeq)reduction2.get_Data(num2); exp3.Add(seq5); reduction2.set_Data(num2, seq5); left = exp3; break; } case 0x3b: { RegExp exp4 = new RegExp(); reduction2 = reduction; num2 = 0; seq5 = (RegExpSeq)reduction2.get_Data(num2); exp4.Add(seq5); reduction2.set_Data(num2, seq5); left = exp4; break; } case 60: left = "+"; break; case 0x3d: left = "?"; break; case 0x3e: left = "*"; break; case 0x3f: left = ""; break; case 0x40: { IEnumerator enumerator; Grammar.GrammarProductionList list8 = (Grammar.GrammarProductionList)reduction.get_Data(3); Grammar.GrammarSymbol symbol2 = new Grammar.GrammarSymbol { Name = Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))), Type = SymbolType.Nonterminal, Line = reduction[2].Position.Line }; try { enumerator = list8.GetEnumerator(); while (enumerator.MoveNext()) { Grammar.GrammarProduction current = (Grammar.GrammarProduction)enumerator.Current; current.Head = symbol2; Grammar.AddProduction(current); } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } break; } case 0x41: { Grammar.GrammarProductionList list9 = (Grammar.GrammarProductionList)reduction.get_Data(0); Grammar.GrammarProduction item = new Grammar.GrammarProduction { Handle = (Grammar.GrammarSymbolList)reduction.get_Data(3), Line = reduction[2].Position.Line }; list9.Add(item); left = list9; break; } case 0x42: { Grammar.GrammarProductionList list10 = new Grammar.GrammarProductionList(); Grammar.GrammarProduction production3 = new Grammar.GrammarProduction { Handle = (Grammar.GrammarSymbolList)reduction.get_Data(0) }; list10.Add(production3); left = list10; break; } case 0x43: { Grammar.GrammarSymbolList list11 = (Grammar.GrammarSymbolList)reduction.get_Data(0); left = list11; break; } case 0x44: { Grammar.GrammarSymbolList list12 = new Grammar.GrammarSymbolList(); left = list12; break; } case 0x45: { Grammar.GrammarSymbolList list13 = (Grammar.GrammarSymbolList)reduction.get_Data(0); list13.Add((Grammar.GrammarSymbol)reduction.get_Data(1)); left = list13; break; } case 70: { Grammar.GrammarSymbolList list14 = new Grammar.GrammarSymbolList(); left = list14; break; } case 0x47: { Grammar.GrammarSymbol symbol3 = new Grammar.GrammarSymbol(Conversions.ToString(reduction.get_Data(0)), SymbolType.Content, reduction[0].Position.Line); Grammar.AddHandleSymbol(symbol3); left = symbol3; break; } case 0x48: { Grammar.GrammarSymbol symbol4 = new Grammar.GrammarSymbol(Grammar.TokenText(Conversions.ToString(reduction.get_Data(0))), SymbolType.Nonterminal, reduction[0].Position.Line); Grammar.AddHandleSymbol(symbol4); left = symbol4; break; } } reduction = null; return(left); }