Java源码示例:org.eclipse.xtext.nodemodel.impl.NodeModelBuilder

示例1
protected IParseResult doParse(String ruleName, CharStream in, NodeModelBuilder nodeModelBuilder, int initialLookAhead) {
	TokenSource tokenSource = createLexer(in);
	XtextTokenStream tokenStream = createTokenStream(tokenSource);
	tokenStream.initCurrentLookAhead(initialLookAhead);
	setInitialHiddenTokens(tokenStream);
	AbstractInternalAntlrParser parser = createParser(tokenStream);
	parser.setTokenTypeMap(getTokenDefProvider().getTokenDefMap());
	parser.setSyntaxErrorProvider(getSyntaxErrorProvider());
	parser.setNodeModelBuilder(nodeModelBuilder);
	parser.setSemanticModelBuilder(getElementFactory());
	IUnorderedGroupHelper helper = getUnorderedGroupHelper().get();
	parser.setUnorderedGroupHelper(helper);
	helper.initializeWith(parser);
	try {
		if(ruleName != null)
			return parser.parse(ruleName);
		return parser.parse();
	} catch (Exception re) {
		throw new ParseException(re.getMessage(),re);
	}
}
 
示例2
public static INode nodeWithTwoSiblings() {
	NodeModelBuilder builder = new NodeModelBuilder();
	String text = "alpha beta gamma";
	
	ICompositeNode root = builder.newRootNode(text);

	EObject alpha = new EObjectImpl() {};
	ILeafNode alphaNode = builder.newLeafNode(text.indexOf("alpha"), "alpha".length(), alpha, false, null, root);
	
	EObject beta = new EObjectImpl() {};
	builder.newLeafNode(text.indexOf("beta"), "beta".length(), beta, false, null, root);
	
	EObject gamma = new EObjectImpl() {};
	builder.newLeafNode(text.indexOf("gamma"), "gamma".length(), gamma, false, null, root);
	
	return alphaNode;
}
 
示例3
@Before
public void setUp() throws Exception {
	nodes = new INode[NUM_NODES];
	NodeModelBuilder builder = new NodeModelBuilder();
	nodes[0] = new CompositeNode();
	nodes[1] = new CompositeNode();
	nodes[2] = new HiddenLeafNode();
	nodes[3] = new LeafNode();
	nodes[4] = new HiddenLeafNode();
	nodes[5] = new CompositeNode();
	nodes[6] = new LeafNode();
	nodes[7] = new CompositeNode();
	nodes[8] = new HiddenLeafNode();
	nodes[9] = new LeafNode();
	
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[1]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[5]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[7]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[9]);
	builder.addChild((ICompositeNode)nodes[1], (AbstractNode)nodes[2]);
	builder.addChild((ICompositeNode)nodes[1], (AbstractNode)nodes[3]);
	builder.addChild((ICompositeNode)nodes[1], (AbstractNode)nodes[4]);
	builder.addChild((ICompositeNode)nodes[5], (AbstractNode)nodes[6]);
	builder.addChild((ICompositeNode)nodes[7], (AbstractNode)nodes[8]);
}
 
示例4
@Test public void testNodePath() throws Exception {
	NodeModelBuilder builder = new NodeModelBuilder();
	ICompositeNode n = new CompositeNode();
	ICompositeNode n1 = new CompositeNode();
	builder.addChild(n, (AbstractNode) n1);
	ICompositeNode n2 = new CompositeNode();
	builder.addChild(n, (AbstractNode) n2);
	ILeafNode l1 = new LeafNode();
	builder.addChild(n2, (AbstractNode) l1);
	ILeafNode l2 = new LeafNode();
	builder.addChild(n2, (AbstractNode) l2);
	
	assertEquals(n, find(n,n));
	assertEquals(n1, find(n,n1));
	assertEquals(n2, find(n,n2));
	assertEquals(l1, find(n,l1));
	assertEquals(l2, find(n,l2));
}
 
示例5
/** {@inheritDoc} */
@Override
protected IParseResult doParse(final String ruleName, final CharStream in, final NodeModelBuilder nodeModelBuilder, final int initialLookAhead) {
  final IParseResult parseResult = super.doParse(ruleName, in, nodeModelBuilder, initialLookAhead);
  if (delegate == null || parseResult.hasSyntaxErrors()) {
    return parseResult;
  }
  // If delegation was potentially used, we need to check for syntax errors in replaced nodes
  boolean hasError = false;
  Iterator<AbstractNode> nodeIterator = ((CompositeNode) parseResult.getRootNode()).basicIterator();
  while (nodeIterator.hasNext()) {
    AbstractNode node = nodeIterator.next();
    if (node.getSyntaxErrorMessage() != null) {
      hasError = true;
      break;
    }
  }
  if (hasError) {
    return new ParseResult(parseResult.getRootASTElement(), parseResult.getRootNode(), true);
  }
  return parseResult;
}
 
示例6
@Override
public IParseResult parse(RuleCall ruleCall, Reader reader, int initialLookAhead) {
	NodeModelBuilder builder = createNodeModelBuilder();
	builder.setForcedFirstGrammarElement(ruleCall);
	IParseResult parseResult = doParse(ruleCall.getRule().getName(), new ReaderCharStream(reader), builder, initialLookAhead);
	return parseResult;
}
 
示例7
@Override
public IParseResult parse(RuleCall ruleCall, Reader reader, int initialLookAhead) {
	try {
		NodeModelBuilder builder = nodeModelBuilder.get();
		builder.setForcedFirstGrammarElement(ruleCall);
		IParseResult parseResult = doParse(ruleCall.getRule().getName(), new ANTLRReaderStream(reader), builder, initialLookAhead);
		return parseResult;
	} catch (IOException e) {
		throw new WrappedException(e);
	}
}
 
示例8
@Before
public void setUp() throws Exception {
	NodeModelBuilder builder = new NodeModelBuilder();
	nodes = new INode[NUM_NODES];
	nodes[0] = new CompositeNode();
	nodes[1] = new LeafNode();
	nodes[2] = new CompositeNode();
	nodes[3] = new CompositeNode();
	nodes[4] = new LeafNode();
	nodes[5] = new LeafNode();
	nodes[6] = new LeafNode();
	nodes[7] = new CompositeNode();
	nodes[8] = new LeafNode();
	nodes[9] = new LeafNode();
	nodes[10]= new CompositeNode();
	
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[1]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[2]);
	builder.addChild((ICompositeNode)nodes[2], (AbstractNode)nodes[3]);
	builder.addChild((ICompositeNode)nodes[3], (AbstractNode)nodes[4]);
	builder.addChild((ICompositeNode)nodes[3], (AbstractNode)nodes[5]);
	builder.addChild((ICompositeNode)nodes[2], (AbstractNode)nodes[6]);
	builder.addChild((ICompositeNode)nodes[2], (AbstractNode)nodes[7]);
	builder.addChild((ICompositeNode)nodes[2], (AbstractNode)nodes[8]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[9]);
	builder.addChild((ICompositeNode)nodes[0], (AbstractNode)nodes[10]);
}
 
示例9
private ICompositeNode newSimpleNodeAdapter(final INode... nodes) {
	NodeModelBuilder builder = new NodeModelBuilder();
	ICompositeNode result = new CompositeNodeWithSemanticElement();
	for(INode node: nodes) {
		builder.addChild(result, (AbstractNode) node);
	}
	return result;
}
 
示例10
/**
 * {@inheritDoc}.
 * For parser delegation it is critically important that the root node of the parsed sub-tree is not merged. Otherwise we do not have a proper new composite
 * node for replacement.
 */
public IParseResult parseDelegate(final ParserRule rule, final Reader reader) {
  try {
    NodeModelBuilder builder = createNodeModelBuilder();
    builder.setForcedFirstGrammarElement(null);
    return doParse(rule.getName(), new ANTLRReaderStream(reader), builder, 0);
  } catch (IOException e) {
    throw new WrappedException(e);
  }
}
 
示例11
/**
 * @since 2.9
 */
public Class<? extends NodeModelBuilder> bindNodeModelBuilder() {
	return LookAheadPreservingNodeModelBuilder.class;
}
 
示例12
/**
 * @since 2.5
 */
protected NodeModelBuilder createNodeModelBuilder() {
	return nodeModelBuilder.get();
}
 
示例13
public void setNodeModelBuilder(NodeModelBuilder nodeModelBuilder) {
	this.nodeBuilder = nodeModelBuilder;
}
 
示例14
public NodeModelBuilder getNodeModelBuilder() {
	return nodeBuilder;
}
 
示例15
public static AbstractNode nodeWithTwoSiblings() {
	NodeModelBuilder builder = new NodeModelBuilder();
	String text = "alpha beta gamma";
	
	RootNode root = new RootNode();
	root.basicSetCompleteContent(text);
	
	EObject alpha = new EObjectImpl() {};
	builder.newLeafNode(text.indexOf("alpha"), "alpha".length(), alpha, false, null, root);
	
	EObject beta = new EObjectImpl() {};
	builder.newLeafNode(text.indexOf("beta"), "beta".length(), beta, false, null, root);
	
	EObject gamma = new EObjectImpl() {};
	builder.newLeafNode(text.indexOf("gamma"), "gamma".length(), gamma, false, null, root);
	
	return root.basicGetFirstChild();

}
 
示例16
@Before
public void setUp() throws Exception {
	builder = new NodeModelBuilder();
}
 
示例17
@Before
public void setUp() throws Exception {
	this.mutator = new NodeModelBuilder();
}