Example #1
0
    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);
        }
    }
Example #2
0
    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);
    }