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