private static Dictionary <string, List <int[]> > LoadRuleGrammar() { Dictionary <string, List <int[]> > RuleGroups = new Dictionary <string, List <int[]> >(); if (jsonCont.ruleGroupsData != null && jsonCont.ruleGroupsData.Count > 0) { foreach (RuleGroupsData rg in jsonCont.ruleGroupsData) { if (!RuleGroups.ContainsKey(rg.RuleGroupName)) { RuleGroups.Add(rg.RuleGroupName, BuildRuleSet(rg)); if (!GlobalReferences.ActiveRulesGrammer.Contains(rg.RuleGroupName)) { GlobalReferences.ActiveRulesGrammer.Add(rg.RuleGroupName); } } } return(RuleGroups); } else { foreach (RuleData r in jsonCont.ruleData) { string _rg = BuildRuleGrammar(r); RuleGroupsData rg = new RuleGroupsData(); rg.RuleGroupName = _rg; rg.RuleGrammar = new string[1] { _rg }; if (!RuleGroups.ContainsKey(_rg)) { RuleGroups.Add(_rg, BuildRuleSet(rg)); if (!GlobalReferences.ActiveRulesGrammer.Contains(rg.RuleGroupName)) { GlobalReferences.ActiveRulesGrammer.Add(rg.RuleGroupName); } } } return(RuleGroups); } }
private static List <int[]> BuildRuleSet(RuleGroupsData rg) { List <int[]> groups = new List <int[]>(); foreach (RuleData r in jsonCont.ruleData) { foreach (string _rg in rg.RuleGrammar) { if (string.Compare(_rg, BuildRuleGrammar(r)) == 0) { int row = ruleLookup[r.part1 + "|" + r.conn1]; int column = ruleLookup[r.part2 + "|" + r.conn2]; groups.Add(new int[2] { row, column }); } } } return(groups); }