edu.mit.ai.psg.jeva.examples
Class TraceAllEvalHook

java.lang.Object
  |
  +--edu.mit.ai.psg.jeva.JevaVisitorBase
        |
        +--edu.mit.ai.psg.jeva.examples.TraceEvalHookBase
              |
              +--edu.mit.ai.psg.jeva.examples.TraceAllEvalHook
Direct Known Subclasses:
TraceCallsEvalHook

public class TraceAllEvalHook
extends TraceEvalHookBase

TraceAllEvalHook.java traces evaluation by printing out the source of each java construct and the values of its free variables. This version only works on single threaded programs. Output defaults to System.err. (note: requires edu.mit.ai.psg.strings). It produce traces of the following form:

->for (int i = 0; i < 1; i++) {
|   break;
| }
| ->i < 1
| | {i=0}
| | 0 < 1
| <-true
| for (int i = 0; true; i++) {
|   break;
| }
| ->{
| |   break;
| | }
| | ->break;
| | <-break
| <-break
<-


Constructor Summary
TraceAllEvalHook()
           
TraceAllEvalHook(PrintWriter pw)
           
 
Method Summary
 Object indentedTrace(PrintWriter iw, IJevaNode node, Object data)
          Calls TraceMethods.traceSource(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) and TraceMethods.traceFreeNames(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) before node is evaluated, TraceMethods.traceApplications(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) after subexpressions are evaluated, and TraceMethods.tracePostData(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) after node completes.
static void main(String[] ignore)
           
 Object visit(JNELiteralExpression node, Object data)
          An override to avoid tracing literals
 Object visit(JNName node, Object data)
          An override to avoid tracing simple names, but still trace field accesses
 
Methods inherited from class edu.mit.ai.psg.jeva.examples.TraceEvalHookBase
trace, visit
 
Methods inherited from class edu.mit.ai.psg.jeva.JevaVisitorBase
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TraceAllEvalHook

public TraceAllEvalHook()

TraceAllEvalHook

public TraceAllEvalHook(PrintWriter pw)
Method Detail

visit

public Object visit(JNELiteralExpression node,
                    Object data)
An override to avoid tracing literals
Overrides:
visit in class JevaVisitorBase

visit

public Object visit(JNName node,
                    Object data)
An override to avoid tracing simple names, but still trace field accesses
Overrides:
visit in class JevaVisitorBase

indentedTrace

public Object indentedTrace(PrintWriter iw,
                            IJevaNode node,
                            Object data)
Calls TraceMethods.traceSource(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) and TraceMethods.traceFreeNames(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) before node is evaluated, TraceMethods.traceApplications(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) after subexpressions are evaluated, and TraceMethods.tracePostData(java.io.PrintWriter, edu.mit.ai.psg.jeva.IJevaNode, java.lang.Object) after node completes.
Overrides:
indentedTrace in class TraceEvalHookBase

main

public static void main(String[] ignore)

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-feedback@ai.mit.edu