Search in sources :

Example 1 with When

use of org.whole.lang.grammars.model.When in project whole by wholeplatform.

the class Grammars2ModelsVisitor method createFeature.

protected Feature createFeature(IEntityIterator<Rule> ruleIterator, String featureName) {
    ModelsEntityFactory mf = ModelsEntityFactory.instance;
    IEntityBuilder<Feature> fb = mf.buildFeature();
    fb.set(ModelsFeatureDescriptorEnum.name, featureName);
    while (ruleIterator.hasNext()) {
        Rule rule = ruleIterator.next();
        switch(rule.wGetEntityOrd()) {
            // break;
            case GrammarsEntityDescriptorEnum.When_ord:
                When when = (When) rule;
                ((AbstractPatternFilterIterator<Rule>) ruleIterator).skipTo(when.getRule());
                break;
            case GrammarsEntityDescriptorEnum.NonTerminal_ord:
                if (isLexicalNonTerminal((NonTerminal) rule) && EntityUtils.hasParent(rule) && Matcher.match(GrammarsEntityDescriptorEnum.Concatenate, rule.wGetParent()))
                    break;
                fb.set(ModelsFeatureDescriptorEnum.type, mf.createSimpleName(getMappedEntityName((NonTerminal) rule)));
                IEntity ancestor = null;
                IEntityIterator<IEntity> iterator = IteratorFactory.ancestorIterator();
                iterator.reset(Matcher.findAncestor(GrammarsEntityDescriptorEnum.As, rule));
                while (iterator.hasNext() && !Matcher.match(GrammarsEntityDescriptorEnum.Production, ancestor = iterator.next())) if (Matcher.match(GrammarsEntityDescriptorEnum.Optional, ancestor))
                    fb.set(ModelsFeatureDescriptorEnum.modifiers, mf.createFeatureModifiers(mf.createFeatureModifier(FeatureModifierEnum.optional)));
                return fb.getResult();
        }
    }
    throw new IllegalArgumentException("Missing NonTerminal");
}
Also used : When(org.whole.lang.grammars.model.When) AbstractPatternFilterIterator(org.whole.lang.iterators.AbstractPatternFilterIterator) IEntity(org.whole.lang.model.IEntity) ModelsEntityFactory(org.whole.lang.models.factories.ModelsEntityFactory) Rule(org.whole.lang.grammars.model.Rule) Feature(org.whole.lang.models.model.Feature)

Example 2 with When

use of org.whole.lang.grammars.model.When in project whole by wholeplatform.

the class WhenPart method getModelSpecificChildren.

protected List<IEntity> getModelSpecificChildren() {
    When entity = getModelEntity();
    List<IEntity> list = new ArrayList<IEntity>(2);
    list.add(entity.getPredicate());
    list.add(entity.getRule());
    return list;
}
Also used : When(org.whole.lang.grammars.model.When) IEntity(org.whole.lang.model.IEntity) ArrayList(java.util.ArrayList)

Aggregations

When (org.whole.lang.grammars.model.When)2 IEntity (org.whole.lang.model.IEntity)2 ArrayList (java.util.ArrayList)1 Rule (org.whole.lang.grammars.model.Rule)1 AbstractPatternFilterIterator (org.whole.lang.iterators.AbstractPatternFilterIterator)1 ModelsEntityFactory (org.whole.lang.models.factories.ModelsEntityFactory)1 Feature (org.whole.lang.models.model.Feature)1