|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--edu.mit.ai.psg.jevaES.JevaES
JevaES (Java Evaluator: Expressions & Statements) is the entry point class of the core of a source code evaluator for Java expressions and statements; see edu.mit.ai.psg.jevaESUI for user interfaces.
To just evaluate a single expression or statement from a command
line, see main(String[]).
To parse and evaluate individual expressions:
parseEvalStringExpression(String).
. JevaES.parseEvalStringExpression("25 * 9 / 5 + 32") ==> 77
parseStringExpression(String), thenEvalMethods.evaluate(IExpressionNode), and useIJevaNode.getEndToken() to see how far the parse proceeded.
. IExpressionNode expr = JevaES.parseStringExpression("25*9/5+32 degF");
. expr.getEndToken().beginColumn ==> 10
. EvalMethods.evaluate(expr) ==> 77
Statements that define local variables, or that import classes or packages, return an extended environment. This environment may be passed as an argument to later calls to parseEval...(...) or EvalMethods.evaluate(...), making the variable names or imported class or package names available to them.
. IEnv env = JevaES.parseEvalStringStatement("import java.awt.*;");
. env = JevaES.parseEvalStringStatement("Frame f = new Frame();", env);
. Frame frame = (Frame) JevaES.parseEvalStringExpression("f", env);
To define names directly, start with a makeDefaultEnv()
and extend it with extendEnv(Class, String, Object, IEnv).
. Frame frameA = new Frame();
. IEnv env = JevaES.makeDefaultEnv();
. env = JevaES.extendEnv(Frame.class, "f", frameA, env);
. Frame frame = (Frame) JevaES.parseEvalStringExpression("f", env);
See edu.mit.ai.psg.jevaESUI
for user interfaces which accept typed expressions and statements.JevaES was developed using a parser generated by Sun's free Java parser generator JavaCC/JJTree (now maintained by the spinoff Metamata), using a modified version of the example Java grammar.
| Field Summary | |
static int |
isSuppressingAccessChecksBit
Option: suppress checking accessibility (protected, etc.); may be useful when JevaES is used for debugging, but requires java.lang.reflect.ReflectPermission for edu/mit/ai/psg/jevaES if there is a SecurityManager. |
static int |
isSuppressingPackageNameChecksBit
Option: suppress checking spelling of package names against directory names; used if security prevents access to classPath |
static int |
leftmostOptionBit
|
| Method Summary | |
static IEnv |
extendEnv(boolean isFinal,
Class type,
String name,
Object value,
IEnv nextEnv)
Extend an env with a new local named value (may specify if final). |
static IEnv |
extendEnv(Class type,
String name,
Object value,
IEnv nextEnv)
Extend an env with a new local named value (that is not final). |
static String |
getCopyright()
|
static String |
getHomepage()
|
static String |
getNoWarranty()
|
static String |
getVersion()
|
static boolean |
isSuppressingAccessChecks(IEnv env)
|
static boolean |
isSuppressingPackageNameChecks(IEnv env)
|
static void |
main(String[] parameters)
Evaluate a single statment or expression from command line. |
static IEnv |
makeDefaultEnv()
Return a new default environment, which imports java.lang. |
static IEnv |
makeDefaultEnv(int optionBits)
|
static Object |
parseEvalStreamExpression(InputStream stream)
Parse and evaluate a single top-level java expression from stream, using default environment. |
static Object |
parseEvalStreamExpression(InputStream stream,
IEnv env)
Parse and evaluate a single top-level java expression from stream in environment env. |
static IEnv |
parseEvalStreamStatement(InputStream stream)
Parse and evaluate a single top-level java statement from stream, using default environment. |
static IEnv |
parseEvalStreamStatement(InputStream stream,
IEnv env)
Parse and evaluate a single top-level java statement from stream, using environment env. |
static Object |
parseEvalStringExpression(String s)
Parse and evaluate a single top-level java expression from string s, using default environment. |
static Object |
parseEvalStringExpression(String s,
IEnv env)
Parse and evaluate a single top-level java expression from string s in environment env. |
static IEnv |
parseEvalStringStatement(String s)
Parse and evaluate one top-level (no free local vars) Java statement from string s, using default environment. |
static IEnv |
parseEvalStringStatement(String s,
IEnv env)
Parse and evaluate one top-level (no free local vars) Java statement from string s, using environment env. |
static IExpressionNode |
parseStreamExpression(InputStream stream)
Parse one Java expression from stream. |
static IStatementNode |
parseStreamStatement(InputStream stream)
Parse one Java statement from stream. |
static IExpressionNode |
parseStringExpression(String s)
Parse one Java expression in string s. |
static IStatementNode |
parseStringStatement(String s)
Parse one Java statement in string s. |
| Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
| Field Detail |
public static final int isSuppressingPackageNameChecksBit
public static final int isSuppressingAccessChecksBit
public static final int leftmostOptionBit
| Method Detail |
public static String getCopyright()
public static String getNoWarranty()
public static String getVersion()
public static String getHomepage()
public static final boolean isSuppressingPackageNameChecks(IEnv env)
public static final boolean isSuppressingAccessChecks(IEnv env)
public static IEnv makeDefaultEnv()
public static IEnv makeDefaultEnv(int optionBits)
public static IEnv extendEnv(Class type,
String name,
Object value,
IEnv nextEnv)
public static IEnv extendEnv(boolean isFinal,
Class type,
String name,
Object value,
IEnv nextEnv)
public static Object parseEvalStringExpression(String s)
throws ParseException,
VerifyingException,
ThrowException
public static Object parseEvalStreamExpression(InputStream stream)
throws ParseException,
VerifyingException,
ThrowException
public static Object parseEvalStringExpression(String s,
IEnv env)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static Object parseEvalStreamExpression(InputStream stream,
IEnv env)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static IEnv parseEvalStringStatement(String s)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static IEnv parseEvalStreamStatement(InputStream stream)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static IEnv parseEvalStringStatement(String s,
IEnv env)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static IEnv parseEvalStreamStatement(InputStream stream,
IEnv env)
throws ParseException,
VerifyingException,
AbruptCompletionException
public static IExpressionNode parseStreamExpression(InputStream stream)
throws ParseException
public static IExpressionNode parseStringExpression(String s)
throws ParseException
public static IStatementNode parseStreamStatement(InputStream stream)
throws ParseException
public static IStatementNode parseStringStatement(String s)
throws ParseException
public static void main(String[] parameters)
Note: uses .class file if available and no older than .java file, otherwise interprets .java file.
|
Copyright (c) 1996-1999 Massachusetts Institute of Technology Feedback: jeva-bugs@ai.mit.edu |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||