use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class TreeConstTest method testSingleAssignmentOrNull.
@Test
public void testSingleAssignmentOrNull() throws Exception {
AbstractRule rule = parseRule("Model: 'foo' name=ID?;");
Group group = (Group) rule.getAlternatives();
assertTypes(nfa.getNFA(group).getTypes(), "Model", "null");
assertTypes(nfa.getNFA(group.getElements().get(0)).getTypesToCheck());
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class XtextValidationTest method testRuleCallAllowed_10.
@Test
public void testRuleCallAllowed_10() throws Exception {
String grammarAsText = "grammar test with org.eclipse.xtext.common.Terminals\n" + "generate test 'http://test'\n" + "Model: name=ID Fragment;\n" + "fragment Fragment: value=STRING;";
Grammar grammar = (Grammar) getModel(grammarAsText);
ParserRule rule = (ParserRule) grammar.getRules().get(0);
RuleCall ruleCall = (RuleCall) ((Group) rule.getAlternatives()).getElements().get(1);
XtextValidator validator = get(XtextValidator.class);
ValidatingMessageAcceptor messageAcceptor = new ValidatingMessageAcceptor(null, false, false);
validator.setMessageAcceptor(messageAcceptor);
validator.checkUnassignedRuleCallAllowed(ruleCall);
messageAcceptor.validate();
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class PartialParsingHelper method hasMandatoryFollowElements.
private boolean hasMandatoryFollowElements(AbstractElement lastParsedElement) {
if (lastParsedElement.eContainer() instanceof AbstractElement) {
AbstractElement directParent = (AbstractElement) lastParsedElement.eContainer();
if (directParent instanceof Group) {
Group group = (Group) directParent;
int idx = group.getElements().indexOf(lastParsedElement) + 1;
for (int i = idx; i < group.getElements().size(); i++) {
if (isMandatory(group.getElements().get(i)))
return true;
}
}
return hasMandatoryFollowElements(directParent);
}
return false;
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class XtextValidationTest method testPredicatedUnorderedGroup_04.
@Test
public void testPredicatedUnorderedGroup_04() throws Exception {
String grammarAsText = "grammar test with org.eclipse.xtext.common.Terminals\n" + "generate test 'http://test'\n" + "A: =>(name=ID value=B);\n" + "B: name=ID & value=STRING;";
Grammar grammar = (Grammar) getModel(grammarAsText);
XtextValidator validator = get(XtextValidator.class);
ValidatingMessageAcceptor messageAcceptor = new ValidatingMessageAcceptor(null, true, false);
Group predicatedGroup = (Group) grammar.getRules().get(0).getAlternatives();
Group groupContent = (Group) predicatedGroup.getElements().get(0);
Assignment valueAssignment = (Assignment) groupContent.getElements().get(1);
messageAcceptor.expectedContext(grammar.getRules().get(0).getAlternatives(), valueAssignment.getTerminal(), grammar.getRules().get(1).getAlternatives());
validator.setMessageAcceptor(messageAcceptor);
validator.checkUnorderedGroupIsNotPredicated(grammar);
messageAcceptor.validate();
}
use of org.eclipse.xtext.Group in project xtext-core by eclipse.
the class XtextValidationTest method testRuleCallAllowed_09_335692.
@Test
public void testRuleCallAllowed_09_335692() throws Exception {
String grammarAsText = "grammar test with org.eclipse.xtext.common.Terminals\n" + "generate test 'http://test'\n" + "Model : value=ID FRAGMENT;\n" + "SubModel : FRAGMENT;\n" + "terminal fragment FRAGMENT: ';';";
Grammar grammar = (Grammar) getModel(grammarAsText);
ParserRule rule = (ParserRule) grammar.getRules().get(0);
RuleCall ruleCall = (RuleCall) ((Group) rule.getAlternatives()).getElements().get(1);
XtextValidator validator = get(XtextValidator.class);
ValidatingMessageAcceptor messageAcceptor = new ValidatingMessageAcceptor(ruleCall, true, false);
validator.setMessageAcceptor(messageAcceptor);
validator.checkUnassignedRuleCallAllowed(ruleCall);
validator.checkTerminalFragmentCalledFromTerminalRule(ruleCall);
messageAcceptor.validate();
}
Aggregations