private ParsingRule FindOrAddRuleByName(string name)
        {
            foreach (var rule in _rules)
            {
                if (rule.Name == name)
                {
                    return(rule);
                }
            }

            var newRule = new ParsingRule(name);

            _rules.Add(newRule);
            return(newRule);
        }
        //private void ExpandAllRecursive(ParsingRule rule)
        //{
        //    if (rule.Definitions != null)
        //    {
        //        foreach (var definition in rule.Definitions)
        //        {
        //            Console.WriteLine();
        //            foreach (var step in definition)
        //                ExpandAllRecursive(step);
        //        }
        //    }
        //    else
        //    {
        //        foreach (var pred in rule.Predicates)
        //            Console.Write("{0}, ", pred.name);
        //    }
        //}

        private void ExpandAllRecursive(ParsingRule rule)
        {
            if (rule.Definitions != null)
            {
                foreach (var definition in rule.Definitions)
                {
                    foreach (var step in definition)
                    {
                        if (step.Predicates != null)
                        {
                            Console.Write("{0}, ", step.Name);
                        }
                        else
                        {
                            ExpandAllRecursive(step);
                        }
                    }
                }
            }
        }
示例#3
0
 private object ExpandRulesTree(ParsingRule rulesTreeRoot)
 {
     throw new NotImplementedException();
 }