本文整理汇总了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;
}
}
}
}
示例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;
}
示例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;
}
示例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);
}
示例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;
}
示例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;
}
示例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);
}
示例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;
}
示例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);
}
示例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);
}