当前位置: 首页>>代码示例>>Java>>正文


Java ImploderAttachment.getRightToken方法代码示例

本文整理汇总了Java中org.spoofax.jsglr.client.imploder.ImploderAttachment.getRightToken方法的典型用法代码示例。如果您正苦于以下问题:Java ImploderAttachment.getRightToken方法的具体用法?Java ImploderAttachment.getRightToken怎么用?Java ImploderAttachment.getRightToken使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.spoofax.jsglr.client.imploder.ImploderAttachment的用法示例。


在下文中一共展示了ImploderAttachment.getRightToken方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getPlaceholder

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private @Nullable IStrategoAppl getPlaceholder(int position, final Iterable<IStrategoTerm> terms) {
    for(IStrategoTerm term : terms) {
        if(term instanceof IStrategoAppl) {
            IToken left = ImploderAttachment.getLeftToken(term);
            IToken right = ImploderAttachment.getRightToken(term);

            final IStrategoAppl appl = (IStrategoAppl) term;
            if(appl.getConstructor().getName().endsWith("-Plhdr") && position > left.getStartOffset()
                && position <= right.getEndOffset()) {
                return appl;
            }
        }
    }

    return null;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:17,代码来源:JSGLRCompletionService.java

示例2: getLists

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private @Nullable Iterable<IStrategoList> getLists(final Iterable<IStrategoTerm> terms,
    Map<IStrategoTerm, Boolean> leftRecursiveTerms, Map<IStrategoTerm, Boolean> rightRecursiveTerms) {

    Collection<IStrategoList> lists = Lists.newLinkedList();
    for(IStrategoTerm term : terms) {
        if(term instanceof IStrategoList) {
            final IStrategoList list = (IStrategoList) term;
            lists.add(list);
        } else {
            IToken left = ImploderAttachment.getLeftToken(term);
            IToken right = ImploderAttachment.getRightToken(term);
            // if term is not nullable, nor a list nor left or right recursive stop the search
            if(left.getStartOffset() <= right.getEndOffset()) {
                boolean isLeftRecursive = leftRecursiveTerms.containsKey(term);
                boolean isRightRecursive = rightRecursiveTerms.containsKey(term);
                if(!isLeftRecursive && !isRightRecursive) {
                    break;
                }
            }
        }
    }

    return lists;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:25,代码来源:JSGLRCompletionService.java

示例3: getOptionals

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private @Nullable Iterable<IStrategoTerm> getOptionals(final Iterable<IStrategoTerm> terms,
    Map<IStrategoTerm, Boolean> leftRecursiveTerms, Map<IStrategoTerm, Boolean> rightRecursiveTerms) {

    Collection<IStrategoTerm> optionals = Lists.newLinkedList();
    for(IStrategoTerm term : terms) {
        IToken left = ImploderAttachment.getLeftToken(term);
        IToken right = ImploderAttachment.getRightToken(term);
        if(!(term instanceof IStrategoList) && left.getStartOffset() > right.getEndOffset()) {
            optionals.add(term);
        } else if(term instanceof IStrategoList) {
            continue;
            // if term is not nullable, nor a list nor left or right recursive stop the search
        } else {
            boolean isLeftRecursive = leftRecursiveTerms.containsKey(term);
            boolean isRightRecursive = rightRecursiveTerms.containsKey(term);
            if(!isLeftRecursive && !isRightRecursive) {
                break;
            }
        }
    }

    return optionals;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:24,代码来源:JSGLRCompletionService.java

示例4: getRightRecursiveTerms

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private Iterable<IStrategoTerm> getRightRecursiveTerms(int position, Iterable<IStrategoTerm> terms,
    Map<IStrategoTerm, Boolean> rightRecursiveTerms) {

    Collection<IStrategoTerm> rightRecursive = Lists.newLinkedList();
    for(IStrategoTerm term : terms) {
        boolean isRightRecursive = rightRecursiveTerms.containsKey(term);

        IToken left = ImploderAttachment.getLeftToken(term);
        IToken right = ImploderAttachment.getRightToken(term);

        if(isRightRecursive && position <= left.getStartOffset()) {
            rightRecursive.add(term);
        } else if(term instanceof IStrategoList || left.getStartOffset() > right.getEndOffset()) {
            continue;
        } else {
            break;
        }
    }

    return rightRecursive;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:22,代码来源:JSGLRCompletionService.java

示例5: getLeftRecursiveTerms

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private Iterable<IStrategoTerm> getLeftRecursiveTerms(int position, Iterable<IStrategoTerm> terms,
    Map<IStrategoTerm, Boolean> leftRecursiveTerms) {
    Collection<IStrategoTerm> leftRecursive = Lists.newLinkedList();
    for(IStrategoTerm term : terms) {
        boolean isLeftRecursive = leftRecursiveTerms.containsKey(term);

        IToken left = ImploderAttachment.getLeftToken(term);
        IToken right = ImploderAttachment.getRightToken(term);

        if(isLeftRecursive && position > right.getEndOffset()) {
            leftRecursive.add(term);
        } else if(term instanceof IStrategoList || left.getStartOffset() > right.getEndOffset()) {
            continue;
        } else {
            break;
        }
    }

    return leftRecursive;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:21,代码来源:JSGLRCompletionService.java

示例6: NodeSource

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private NodeSource(ImploderAttachment imploderAttachment,
		AbstractTermAttachment attachment) {
	final IToken leftToken = imploderAttachment.getLeftToken();
	final IToken rightToken = imploderAttachment.getRightToken();
	line = leftToken.getLine() + 1;
	column = leftToken.getColumn() + 1;
	fragment = leftToken.getTokenizer().toString(leftToken, rightToken);
	filename = leftToken.getTokenizer().getFilename();
	this.attachment = attachment;
}
 
开发者ID:metaborg,项目名称:dynsem,代码行数:11,代码来源:NodeSource.java

示例7: tokenLocation

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private ISourceLocation tokenLocation(IStrategoTerm fragment) {
    final IToken left = ImploderAttachment.getLeftToken(fragment);
    final IToken right = ImploderAttachment.getRightToken(fragment);
    if(left == null || right == null) {
        return null;
    }
    final ISourceRegion region = JSGLRSourceRegionFactory.fromTokens(left, right);
    final FileObject resource = SourceAttachment.getResource(fragment, resourceService);
    return new SourceLocation(region, resource);
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:11,代码来源:TracingService.java

示例8: call

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
@Override
public final boolean call(IContext env, Strategy[] svars, IStrategoTerm[] tvars) {
	final ITermFactory factory = env.getFactory();
	final IStrategoTerm term = env.current();

	ImploderAttachment imploder = ImploderAttachment.get(term);
	if(imploder == null) {
		final IStrategoTerm originTerm = OriginAttachment.getOrigin(term);
		if(originTerm == null)
			return false;
		imploder = ImploderAttachment.get(originTerm);
	}
	if(imploder == null)
		return false;

	final IToken left = imploder.getLeftToken();
	final IToken right = imploder.getRightToken();
	String filename = left.getFilename();
	if(filename == null)
		filename = right.getFilename();
	if(filename == null)
		filename = ".";

	env.setCurrent(factory.makeTuple(factory.makeString(filename), factory.makeInt(left.getLine()),
		factory.makeInt(left.getColumn()), factory.makeInt(left.getStartOffset()),
		factory.makeInt(right.getEndOffset())));
	return true;
}
 
开发者ID:metaborg,项目名称:jsglr,代码行数:29,代码来源:OriginLocationOffsetPrimitive.java


注:本文中的org.spoofax.jsglr.client.imploder.ImploderAttachment.getRightToken方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。