org.mozilla.javascript.Evaluator Maven / Gradle / Ivy
The newest version!
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript;
import org.mozilla.javascript.ast.ScriptNode;
import java.util.List;
/**
* Abstraction of evaluation, which can be implemented either by an
* interpreter or compiler.
*/
public interface Evaluator {
/**
* Compile the script or function from intermediate representation
* tree into an executable form.
*
* @param compilerEnv Compiler environment
* @param tree parse tree
* @param encodedSource encoding of the source code for decompilation
* @param returnFunction if true, compiling a function
* @return an opaque object that can be passed to either
* createFunctionObject or createScriptObject, depending on the
* value of returnFunction
*/
public Object compile(CompilerEnvirons compilerEnv,
ScriptNode tree,
String encodedSource,
boolean returnFunction);
/**
* Create a function object.
*
* @param cx Current context
* @param scope scope of the function
* @param bytecode opaque object returned by compile
* @param staticSecurityDomain security domain
* @return Function object that can be called
*/
public Function createFunctionObject(Context cx, Scriptable scope,
Object bytecode, Object staticSecurityDomain);
/**
* Create a script object.
*
* @param bytecode opaque object returned by compile
* @param staticSecurityDomain security domain
* @return Script object that can be evaluated
*/
public Script createScriptObject(Object bytecode,
Object staticSecurityDomain);
/**
* Capture stack information from the given exception.
* @param ex an exception thrown during execution
*/
public void captureStackInfo(RhinoException ex);
/**
* Get the source position information by examining the stack.
* @param cx Context
* @param linep Array object of length >= 1; getSourcePositionFromStack
* will assign the line number to linep[0].
* @return the name of the file or other source container
*/
public String getSourcePositionFromStack(Context cx, int[] linep);
/**
* Given a native stack trace, patch it with script-specific source
* and line information
* @param ex exception
* @param nativeStackTrace the native stack trace
* @return patched stack trace
*/
public String getPatchedStack(RhinoException ex,
String nativeStackTrace);
/**
* Get the script stack for the given exception
* @param ex exception from execution
* @return list of strings for the stack trace
*/
public List getScriptStack(RhinoException ex);
/**
* Mark the given script to indicate it was created by a call to
* eval() or to a Function constructor.
* @param script script to mark as from eval
*/
public void setEvalScriptFlag(Script script);
}