本文整理汇总了Java中org.spoofax.interpreter.stratego.Strategy.evaluate方法的典型用法代码示例。如果您正苦于以下问题:Java Strategy.evaluate方法的具体用法?Java Strategy.evaluate怎么用?Java Strategy.evaluate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.spoofax.interpreter.stratego.Strategy
的用法示例。
在下文中一共展示了Strategy.evaluate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: call
import org.spoofax.interpreter.stratego.Strategy; //导入方法依赖的package包/类
@Override
public boolean call(IContext env, Strategy[] svars, IStrategoTerm[] tvars)
throws InterpreterException {
IStrategoTerm input = tvars[0];
if(!Tools.isTermAppl(input) && !isTermTuple(input))
return false;
Strategy c = svars[0];
int arity = input.getSubtermCount();
IStrategoTerm[] result = new IStrategoTerm[arity];
IStrategoTerm[] applArgs = input.getAllSubterms();
for(int i = 0; i < arity; i++) {
env.setCurrent(applArgs[i]);
if(!c.evaluate(env))
return false;
result[i] = env.current();
}
env.setCurrent(env.getFactory().makeList(result));
return true;
}
示例2: call
import org.spoofax.interpreter.stratego.Strategy; //导入方法依赖的package包/类
@Override
public boolean call(IContext env, Strategy[] sargs, IStrategoTerm[] targs)
throws InterpreterException {
if(!(targs[0] instanceof StrategoSet))
return false;
StrategoSet is = (StrategoSet) targs[0];
if(is == null)
return false;
IStrategoTerm t = targs[1];
Strategy s = sargs[0];
if(is.containsKey(t)) {
env.setCurrent(env.getFactory().makeInt(is.getIndex(t)));
return s.evaluate(env);
}
env.setCurrent(env.getFactory().makeInt(is.put(t)));
return true;
}
示例3: handleException
import org.spoofax.interpreter.stratego.Strategy; //导入方法依赖的package包/类
static boolean handleException(IContext env,
Strategy errorCallback,
SGLRException e,
String lastPath) throws InterpreterException {
IStrategoTerm errorTerm = e.toTerm(lastPath);
if (e instanceof FilterException) {
// HACK: print stack trace for this internal error
e.printStackTrace();
}
env.setCurrent(errorTerm);
// FIXME: Stratego doesn't seem to print the erroneous line in Java
return errorCallback.evaluate(env);
}