use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class GrammarParserTest method testPrecedencies_03.
@Test
public void testPrecedencies_03() throws Exception {
UnorderedGroup group = (UnorderedGroup) getModel("'keyword' 'keyword' & 'keyword' 'keyword'");
assertNotNull(group);
assertEquals(2, group.getElements().size());
assertTrue(group.getElements().get(0) instanceof Group);
assertTrue(group.getElements().get(1) instanceof Group);
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class GrammarParserTest method testGroup.
@Test
public void testGroup() throws Exception {
Group group = (Group) getModel("'keyword' 'keyword'");
assertNotNull(group);
assertEquals(2, group.getElements().size());
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class TreeConstTest method testExpression1.
@Test
public void testExpression1() throws Exception {
StringBuilder s = new StringBuilder();
s.append("Expression: Add; ");
s.append("Add returns Expression: Mult ({Add.left=current} '+' right=Mult)?; ");
s.append("Mult returns Expression: Prim ({Mult.left=current} '+' right=Prim)?; ");
s.append("Prim returns Expression: {Val} val=INT | '(' Expression ')'; ");
Grammar rule = parseGrammar(s.toString());
AbstractRule expression = rule.getRules().get(0);
assertTypes(nfa.getNFA(expression.getAlternatives()).getTypes(), "Val", "Add", "Mult");
assertTypes(nfa.getNFA(expression.getAlternatives()).getTypesToCheck(), "Val", "Add", "Mult");
AbstractRule add = rule.getRules().get(1);
assertTypes(nfa.getNFA(add.getAlternatives()).getTypes(), "Val", "Add", "Mult");
assertTypes(nfa.getNFA(add.getAlternatives()).getTypesToCheck(), "Val", "Add", "Mult");
Group add_g1 = (Group) ((Group) add.getAlternatives()).getElements().get(1);
assertTypes(nfa.getNFA(add_g1).getTypes(), "Add");
assertTypes(nfa.getNFA(add_g1).getTypesToCheck(), "Add");
assertTypes(nfa.getNFA(add_g1.getElements().get(2)).getTypes(), "Add");
assertTypes(nfa.getNFA(add_g1.getElements().get(2)).getTypesToCheck());
AbstractRule mult = rule.getRules().get(2);
assertTypes(nfa.getNFA(mult.getAlternatives()).getTypes(), "Val", "Add", "Mult");
assertTypes(nfa.getNFA(mult.getAlternatives()).getTypesToCheck(), "Val", "Add", "Mult");
AbstractRule prim = rule.getRules().get(3);
assertTypes(nfa.getNFA(prim.getAlternatives()).getTypes(), "Val", "Add", "Mult");
assertTypes(nfa.getNFA(prim.getAlternatives()).getTypesToCheck(), "Val", "Add", "Mult");
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class AntlrGrammarGenUtil method getPredicatedElement.
/**
* @since 2.9
*/
public static AbstractElement getPredicatedElement(AbstractElement element) {
if (element.isPredicated()) {
return doGetPredicatedElement(element);
}
if (element instanceof Assignment) {
return getPredicatedElement(((Assignment) element).getTerminal());
}
if (element instanceof RuleCall) {
final RuleCall ruleCall = (RuleCall) element;
final AbstractRule calledRule = ruleCall.getRule();
Group group = (Group) calledRule.getAlternatives();
AbstractElement first = group.getElements().get(0);
AbstractElement result = getPredicatedElement(first);
if (ruleCall.getArguments().isEmpty()) {
return result;
}
EcoreUtil.Copier copier = new EcoreUtil.Copier() {
private static final long serialVersionUID = 1L;
@Override
public EObject copy(EObject eObject) {
if (eObject instanceof ParameterReference) {
ParameterReference paramRef = (ParameterReference) eObject;
Parameter parameter = paramRef.getParameter();
if (calledRule == GrammarUtil.containingRule(parameter)) {
for (NamedArgument givenArgument : ruleCall.getArguments()) {
if (givenArgument.getParameter() == parameter) {
EObject result = copy(givenArgument.getValue());
return result;
}
}
throw new IllegalStateException();
}
}
return super.copy(eObject);
}
};
AbstractElement clone = (AbstractElement) copier.copy(result);
copier.copyReferences();
return clone;
}
return doGetPredicatedElement(element);
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class XtextScopingTest method testScope_01.
@Test
public void testScope_01() {
ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(grammar, "AbstractCallOverridenParserRule");
assertNotNull(rule);
Group group = (Group) rule.getAlternatives();
Assignment ass = (Assignment) group.getElements().get(1);
assertNotNull(ass);
RuleCall call = (RuleCall) ass.getTerminal();
AbstractRule calledRule = call.getRule();
assertNotNull(calledRule);
XtextGrammarAccess ga = (XtextGrammarAccess) get(IGrammarAccess.class);
String text = get(ICrossReferenceSerializer.class).serializeCrossRef(call, ga.getRuleCallAccess().getRuleAbstractRuleCrossReference_0_0(), calledRule, null);
assertNotNull(text);
assertEquals(calledRule.getName(), text);
}
Aggregations