本文整理汇总了Java中org.eclipse.xtext.nodemodel.BidiIterator类的典型用法代码示例。如果您正苦于以下问题:Java BidiIterator类的具体用法?Java BidiIterator怎么用?Java BidiIterator使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
BidiIterator类属于org.eclipse.xtext.nodemodel包,在下文中一共展示了BidiIterator类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: reverse
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@Override
public BidiIterable<AbstractNode> reverse() {
return new BidiIterable<AbstractNode>() {
@Override
public BidiIterator<AbstractNode> iterator() {
BidiIterator<AbstractNode> delegate = BasicNodeIterable.this.iterator();
return new ReversedBidiIterator<AbstractNode>(delegate);
}
@Override
public BidiIterable<AbstractNode> reverse() {
return BasicNodeIterable.this;
}
};
}
示例2: getLinkedMetaModel
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
private List<EObject> getLinkedMetaModel(TypeRef context, EReference ref, ILeafNode text) throws IllegalNodeException {
final ICompositeNode parentNode = text.getParent();
BidiIterator<INode> iterator = parentNode.getChildren().iterator();
while(iterator.hasPrevious()) {
INode child = iterator.previous();
if (child instanceof ILeafNode) {
ILeafNode leaf = (ILeafNode) child;
if (text == leaf)
return super.getLinkedObjects(context, ref, text);
if (!(leaf.getGrammarElement() instanceof Keyword) && !leaf.isHidden()) {
IScope scope = getScope(context, ref);
return XtextMetamodelReferenceHelper.findBestMetamodelForType(
context, text.getText(), leaf.getText(), scope);
}
}
}
return Collections.emptyList();
}
示例3: getTypeRefName
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
public static String getTypeRefName(TypeRef typeRef) {
if (typeRef.getClassifier() != null)
return typeRef.getClassifier().getName();
final ICompositeNode node = NodeModelUtils.getNode(typeRef);
if (node != null) {
final BidiIterator<INode> leafNodes = node.getAsTreeIterable().iterator();
while (leafNodes.hasPrevious()) {
INode previous = leafNodes.previous();
if (previous instanceof ILeafNode && !((ILeafNode) previous).isHidden()) {
String result = previous.getText();
if (result != null && result.startsWith("^")) {
result = result.substring(1);
}
return result;
}
}
}
return null;
}
示例4: setStyles
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
private void setStyles( IHighlightedPositionAcceptor acceptor, BidiIterator<INode> it, String...styles )
{
for( String s : styles )
{
if( !it.hasNext() ) return;
INode n = skipWhiteSpace( acceptor, it );
if( n != null && s != null ) acceptor.addPosition( n.getOffset(), n.getLength(), s );
}
}
示例5: skipWhiteSpace
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
private INode skipWhiteSpace( IHighlightedPositionAcceptor acceptor, BidiIterator<INode> it )
{
INode n = null;
while ( it.hasNext() && ( n = it.next() ).getClass() == HiddenLeafNode.class )
processHiddenNode( acceptor, (HiddenLeafNode)n );
return n;
}
示例6: getLength
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@Override
public int getLength() {
BidiIterator<AbstractNode> iter = basicIterator();
while(iter.hasPrevious()) {
INode prev = iter.previous();
if (prev instanceof ILeafNode && !((ILeafNode) prev).isHidden()) {
int offset = getOffset();
return prev.getTotalEndOffset() - offset;
}
}
return getTotalLength();
}
示例7: getEndOffset
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
/**
* @since 2.5
*/
@Override
public int getEndOffset() {
BidiIterator<AbstractNode> iter = basicIterator();
while(iter.hasPrevious()) {
INode prev = iter.previous();
if (prev instanceof ILeafNode && !((ILeafNode) prev).isHidden()) {
return prev.getTotalEndOffset();
}
}
return getTotalEndOffset();
}
示例8: collectNodesEnclosingChangeRegion
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
private void collectNodesEnclosingChangeRegion(ICompositeNode parent, Range range,
List<ICompositeNode> nodesEnclosingRegion) {
nodesEnclosingRegion.add(parent);
BidiIterator<INode> iterator = parent.getChildren().iterator();
while(iterator.hasPrevious()) {
INode prev = iterator.previous();
if (prev instanceof ICompositeNode) {
if (nodeEnclosesRegion((ICompositeNode) prev, range)) {
collectNodesEnclosingChangeRegion((ICompositeNode) prev, range, nodesEnclosingRegion);
break;
}
}
}
}
示例9: findEntryRuleOrRuleCall
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
/**
* @return either a RuleCall or a ParserRule
*/
public EObject findEntryRuleOrRuleCall(ICompositeNode replaceRootNode) {
EObject grammarElement = replaceRootNode.getGrammarElement();
if (grammarElement instanceof CrossReference) {
grammarElement = ((CrossReference) grammarElement).getTerminal();
}
if (GrammarUtil.isParserRuleCall(grammarElement)) {
return grammarElement;
}
else if (grammarElement instanceof ParserRule) {
return grammarElement;
}
else if (grammarElement instanceof Action) {
BidiIterator<INode> iterator = replaceRootNode.getChildren().iterator();
while(iterator.hasNext()) {
INode next = iterator.next();
if (next instanceof ICompositeNode) {
return findEntryRuleOrRuleCall((ICompositeNode) next);
}
}
throw new IllegalArgumentException("Invalid parsetree: Action node does not have a Composite child");
}
else
throw new IllegalArgumentException(
"Entry rule can only be resolved for parser rules, rule calls, cross-references or actions, but tried to resolve for: "
+ replaceRootNode.getGrammarElement().eClass().getName());
}
示例10: findContextNode
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
protected INode findContextNode(EObject semanticObject) {
INode node = NodeModelUtils.findActualNodeFor(semanticObject);
if (node != null) {
BidiIterator<INode> nodes = node.getAsTreeIterable().iterator();
while (nodes.hasNext()) {
INode next = nodes.next();
if (next.getGrammarElement() instanceof RuleCall)
return next;
if (next.getGrammarElement() instanceof ParserRule
&& ((ParserRule) next.getGrammarElement()).getType().getClassifier() instanceof EClass)
return next;
}
}
throw new RuntimeException("no context found");
}
示例11: collectNodesEnclosingChangeRegion
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
private void collectNodesEnclosingChangeRegion(final ICompositeNode parent, final Range range, final List<ICompositeNode> nodesEnclosingRegion) {
nodesEnclosingRegion.add(parent);
BidiIterator<INode> iterator = parent.getChildren().iterator();
while (iterator.hasPrevious()) {
INode prev = iterator.previous();
if (prev instanceof ICompositeNode) {
if (nodeEnclosesRegion((ICompositeNode) prev, range)) {
collectNodesEnclosingChangeRegion((ICompositeNode) prev, range, nodesEnclosingRegion);
break;
}
}
}
}
示例12: iterator
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@Override
public BidiIterator<INode> iterator() {
return new NodeIterator(startWith);
}
示例13: iterator
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@Override
public BidiIterator<T> iterator() {
return SingletonBidiIterator.<T>create(value);
}
示例14: iterator
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@Override
public BidiIterator<T> iterator() {
BidiIterator<T> delegate = getDelegate().iterator();
return new ReversedBidiIterator<T>(delegate);
}
示例15: instance
import org.eclipse.xtext.nodemodel.BidiIterator; //导入依赖的package包/类
@SuppressWarnings("unchecked")
public static <T> BidiIterator<T> instance() {
return (BidiIterator<T>) INSTANCE;
}