Interface Interpreter

All Known Implementing Classes:
BSHInterpreter, GenericInterpreter, GroovyInterpreter, JythonInterpreter, RhinoInterpreter

public interface Interpreter
Represents an interpreter that can interpret the scripting codes.

It is easier to implement by extending from GenericInterpreter.

Author:
tomyeh
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Tests whether the variable is defined in this interpreter.
    void
    Called when the interpreter is about to be destroyed.
    Returns the class defined in this interpreter, or null if not found.
    org.zkoss.xel.Function
    getFunction(String name, Class[] argTypes)
    Returns the method of the specified name defined in this interpreter, or null if not defined.
    Returns the scripting language this interpreter is associated with.
    Returns the native interpreter, or null if not available.
    Returns the owner of this interpreter.
    Returns the value of a variable defined in this interpreter.
    void
    init(Page owner, String zslang)
    Initializes the interpreter.
    void
    interpret(String script, Scope scope)
    Evaluates the script against the specified scope.
    void
    setVariable(String name, Object value)
    Sets the value of a variable to this interpreter, as if they are defined in the interpreter.
    void
    Removes the value of a variable defined in this interpreter.
  • Method Details

    • init

      void init(Page owner, String zslang)
      Initializes the interpreter. It is called once when the new instance of interpreter is constructed.
      Parameters:
      zslang - the language this interpreter is associated with
    • destroy

      void destroy()
      Called when the interpreter is about to be destroyed. After called, this interpreter cannot be used again.
    • getOwner

      Page getOwner()
      Returns the owner of this interpreter.
    • getLanguage

      String getLanguage()
      Returns the scripting language this interpreter is associated with.
    • getNativeInterpreter

      Object getNativeInterpreter()
      Returns the native interpreter, or null if not available. The native interpreter depends on the implementation of an interpreter.
      Since:
      3.0.2
    • interpret

      void interpret(String script, Scope scope)
      Evaluates the script against the specified scope.

      Implementation Note:

      1. The implementation has to concatenate the string returned by LanguageDefinition.getEachTimeScript(java.lang.String) if not null.
      2. The implementation must use Scopes.getCurrent(org.zkoss.zk.ui.Page) to retrieve the current namespace if the comp argument is null.
      Parameters:
      scope - the scope as the context to interpret the script. If null, the current scope is assumed. The current scope is Scopes.getCurrent(org.zkoss.zk.ui.Page), which is the event target's scope, if the thread is processing an event. The event target is Event.getTarget(). Otherwise, the current scope is the owner page (getOwner().
      Since:
      5.0.0
    • getClass

      Class<?> getClass(String clsnm)
      Returns the class defined in this interpreter, or null if not found.
    • getFunction

      org.zkoss.xel.Function getFunction(String name, Class[] argTypes)
      Returns the method of the specified name defined in this interpreter, or null if not defined.
      Parameters:
      argTypes - the list of argument (a.k.a., parameter) types. If null, Class[0] is assumed.
      Since:
      3.0.0
    • containsVariable

      boolean containsVariable(String name)
      Tests whether the variable is defined in this interpreter. Note: it doesn't search the attributes (Scope).
      Since:
      2.4.0
    • getVariable

      Object getVariable(String name)
      Returns the value of a variable defined in this interpreter. Note: it doesn't search the scope (Scope).
    • setVariable

      void setVariable(String name, Object value)
      Sets the value of a variable to this interpreter, as if they are defined in the interpreter.

      Note: it is not part of any namespace and it has higher priority if its name conflicts with any variable defined in the namespaces.

    • unsetVariable

      void unsetVariable(String name)
      Removes the value of a variable defined in this interpreter.