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


Java ImploderAttachment.get方法代码示例

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


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

示例1: getSorts

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
public static SortType[] getSorts(ISimpleTerm term) {
    TypesmartSortAttachment attach = get(term);
    if(attach != null) {
        return attach.getSorts().ar;
    } else {
        ImploderAttachment imploderAttach = ImploderAttachment.get(term);
        if(imploderAttach != null) {
            if(imploderAttach.isSequenceAttachment()) {
                return new SortType[] { new TList(new TSort(imploderAttach.getElementSort())) };
            } else {
                return new SortType[] { new TSort(imploderAttach.getSort()) };
            }
        } else {
            IStrategoTerm origin = OriginAttachment.getOrigin(term);
            if(origin != null) {
                return getSorts(origin);
            } else {
                return null;
            }
        }
    }
}
 
开发者ID:metaborg,项目名称:mb-rep,代码行数:23,代码来源:TypesmartSortAttachment.java

示例2: sortConsCategory

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private ICategory sortConsCategory(StylerFacet facet, IStrategoTerm term) {
    final ImploderAttachment imploderAttachment = ImploderAttachment.get(term);
    final String sort = imploderAttachment.getSort();
    if(sort == null) {
        return null;
    }
    // LEGACY: for some reason, when using concrete syntax extensions, all sorts are appended with _sort.
    final String massagedSort = sort.replace("_sort", "");
    if(term.getTermType() == IStrategoTerm.APPL) {
        final String cons = ((IStrategoAppl) term).getConstructor().getName();
        if(facet.hasSortConsStyle(massagedSort, cons)) {
            return new SortConsCategory(massagedSort, cons);
        } else if(facet.hasConsStyle(cons)) {
            return new ConsCategory(cons);
        } else if(facet.hasSortStyle(massagedSort)) {
            return new SortCategory(massagedSort);
        }
        return null;
    }

    if(facet.hasSortStyle(massagedSort)) {
        return new SortCategory(massagedSort);
    }

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

示例3: getCategory

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
@Nullable
private ICategory getCategory(final IStrategoTerm term) {
    final ImploderAttachment rootImploderAttachment = ImploderAttachment.get(term);
    final IToken token = rootImploderAttachment.getLeftToken();
    final ISourceRegion region = JSGLRSourceRegionFactory.fromToken(token);
    for (final IRegionCategory<IStrategoTerm> category : this.categories) {
        if ((category.fragment() != null && category.fragment().equals(term)) || category.region().equals(region)) {
            return category.category();
        }
    }
    return null;
}
 
开发者ID:metaborg,项目名称:spoofax-intellij,代码行数:13,代码来源:ATermAstElementTypeProvider.java

示例4: findTopMostCompletionNode

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private StrategoTerm findTopMostCompletionNode(StrategoTerm newNode) {
    StrategoTerm parent = (StrategoTerm) ParentAttachment.getParent(newNode);
    if(parent == null) {
        return newNode;
    }

    ImploderAttachment ia = ImploderAttachment.get(parent);

    if(ia.getSort() == null || ia.isNestedCompletion()) {
        return newNode;
    }

    return findTopMostCompletionNode(parent);

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

示例5: equal

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private static boolean equal(IStrategoTerm t1, IStrategoTerm t2) {
	ImploderAttachment origin1 = ImploderAttachment.get(tryGetOrigin(t1));
	if (origin1 == null) return false;
	if (t1 == t2) return true;
	
	ImploderAttachment origin2 = ImploderAttachment.get(tryGetOrigin(t2));
	return origin1 == origin2;
}
 
开发者ID:metaborg,项目名称:jsglr,代码行数:9,代码来源:OriginEqualPrimitive.java

示例6: 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

示例7: getImploderAttachment

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
private ImploderAttachment getImploderAttachment(IStrategoTerm term) {
	final IStrategoTerm termWithImploder = ImploderAttachment.getImploderOrigin(term);
	if(termWithImploder == null)
		return null;
	return ImploderAttachment.get(termWithImploder);
}
 
开发者ID:metaborg,项目名称:mb-rep,代码行数:7,代码来源:IndexEntryFactory.java

示例8: categorize

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
@Override public Iterable<IRegionCategory<IStrategoTerm>> categorize(ILanguageImpl language,
    ISpoofaxParseUnit parseResult) {
    final List<IRegionCategory<IStrategoTerm>> regionCategories = Lists.newLinkedList();
    if(!parseResult.valid()) {
        return regionCategories;
    }

    final StylerFacet facet = language.facet(StylerFacet.class);
    if(facet == null) {
        logger.error("Cannot categorize input of {}, it does not have a styler facet", language);
        // GTODO: throw exception instead
        return regionCategories;
    }

    final ImploderAttachment rootImploderAttachment = ImploderAttachment.get(parseResult.ast());
    if(rootImploderAttachment == null) {
        logger.error("Cannot categorize input {} of {}, it does not have an imploder attachment", parseResult, language);
        // GTODO: throw exception instead
        return regionCategories;
    }
    final ITokens tokenizer = rootImploderAttachment.getLeftToken().getTokenizer();
    if(tokenizer == null) {
        logger.error("Cannot categorize input {} of {}, it does not have a tokenizer", parseResult, language);
        // GTODO: throw exception instead
        return regionCategories;
    }
    final int tokenCount = tokenizer.getTokenCount();
    int offset = -1;
    for(int i = 0; i < tokenCount; ++i) {
        final IToken token = tokenizer.getTokenAt(i);
        if(tokenizer.isAmbigous() && token.getStartOffset() < offset) {
            // In case of ambiguities, tokens inside the ambiguity are duplicated, ignore.
            continue;
        }
        if(token.getStartOffset() > token.getEndOffset()) {
            // Indicates an invalid region. Empty lists have regions like this.
            continue;
        }
        if(offset >= token.getStartOffset()) {
            // Duplicate region, skip.
            continue;
        }
        offset = token.getEndOffset();

        final ICategory category = category(facet, token);
        if(category != null) {
            final ISourceRegion region = JSGLRSourceRegionFactory.fromToken(token);
            final IStrategoTerm term = (IStrategoTerm) token.getAstNode();
            regionCategories.add(new RegionCategory<>(region, category, term));
        }
    }

    return regionCategories;
}
 
开发者ID:metaborg,项目名称:spoofax,代码行数:55,代码来源:CategorizerService.java

示例9: moveToStart

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
/**
 * Moves to the start of a term.
 *
 * @param term
 *            The term.
 */
private void moveToStart(final PsiBuilder builder, final IStrategoTerm term) {
    final ImploderAttachment imploderAttachment = ImploderAttachment.get(term);
    final int start = imploderAttachment.getLeftToken().getStartOffset();
    moveTo(builder, start);
}
 
开发者ID:metaborg,项目名称:spoofax-intellij,代码行数:12,代码来源:AstBuilder.java

示例10: moveToEnd

import org.spoofax.jsglr.client.imploder.ImploderAttachment; //导入方法依赖的package包/类
/**
 * Moves to the end of a term.
 *
 * @param term
 *            The term.
 */
private void moveToEnd(final PsiBuilder builder, final IStrategoTerm term) {
    final ImploderAttachment imploderAttachment = ImploderAttachment.get(term);
    final int end = imploderAttachment.getRightToken().getEndOffset() + 1;
    moveTo(builder, end);
}
 
开发者ID:metaborg,项目名称:spoofax-intellij,代码行数:12,代码来源:AstBuilder.java


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