예제 #1
0
        IEnumerable <ProductionModel> Rule(EbnfRule rule)
        {
            var nonTerminal     = GetNonTerminalFromQualifiedIdentifier(rule.QualifiedIdentifier);
            var productionModel = new ProductionModel(nonTerminal);

            foreach (var production in Expression(rule.Expression, productionModel))
            {
                yield return(production);
            }
            yield return(productionModel);
        }
예제 #2
0
        private IEnumerable <ProductionModel> Rule(EbnfRule rule)
        {
            var nonTerminal     = GetQualifiedName(rule.Identifier);
            var productionModel = ProductionModel.From(nonTerminal);

            foreach (var production in Expression(rule.Expression, productionModel))
            {
                yield return(production);
            }

            yield return(productionModel);
        }
예제 #3
0
 public EbnfBlockRule(EbnfRule rule)
 {
     Rule      = rule;
     _hashCode = ComputeHashCode();
 }
예제 #4
0
 public EbnfBlockRule(EbnfRule rule)
 {
     Rule = rule;
 }