org.lsmp.djep.xjep
Class PrintVisitor

java.lang.Object
  extended by org.lsmp.djep.xjep.DoNothingVisitor
      extended by org.lsmp.djep.xjep.ErrorCatchingVisitor
          extended by org.lsmp.djep.xjep.PrintVisitor
All Implemented Interfaces:
ParserVisitor
Direct Known Subclasses:
DPrintVisitor

public class PrintVisitor
extends ErrorCatchingVisitor

Prints an expression. Prints the expression with lots of brackets. ((-1.0)/sqrt((1.0-(x^2.0)))). To use

 XJep j = ...; Node in = ...;
 j.print(in,"x");
 

Since:
Dec 04 and NumberFormat object can be supplied to modify printing of numbers., 21 Dec 04 PrintVisitor can now cope with 3 or more arguments to + and *.
Author:
Rich Morris Created on 20-Jun-2003
See Also:
XJep.print(Node), XJep.print(Node, PrintStream), XJep.println(Node), XJep.println(Node, PrintStream), XJep.toString(Node)

Nested Class Summary
static interface PrintVisitor.PrintRulesI
          This interface specifies the method needed to implement a special print rule.
 
Field Summary
static int COMPLEX_I
          Print Complex as 3+2 i
protected  java.text.NumberFormat format
          The NumberFormat object used to print numbers.
static int FULL_BRACKET
          All brackets are printed.
protected  int mode
          The current mode for printing.
protected  java.lang.StringBuffer sb
           
 
Constructor Summary
PrintVisitor()
          Creates a visitor to create and print string representations of an expression tree.
 
Method Summary
 void addSpecialRule(Operator op, PrintVisitor.PrintRulesI rules)
          Adds a special print rule to be added for a given operator.
 void append(java.lang.String s)
          Add a string to buffer.
 java.lang.String formatValue(java.lang.Object val)
          Returns a formated version of the value.
 void formatValue(java.lang.Object val, java.lang.StringBuffer sb1)
          Appends a formatted versions of val to the string buffer.
 int getMaxLen()
           
 int getMode()
          Return the current print mode.
 boolean getMode(int testmode)
           
 void print(Node node)
          Prints on System.out.
 void print(Node node, java.io.PrintStream out)
          Prints the tree descending from node with lots of brackets or specified stream.
 void println(Node node)
          Prints on System.out.
 void println(Node node, java.io.PrintStream out)
          Prints the tree descending from node with a newline at end.
 void setMaxLen(int i)
          Sets the maximum length printed per line.
 void setMode(int mode, boolean flag)
          Set printing mode.
 void setNumberFormat(java.text.NumberFormat format)
           
 java.lang.String toString(Node node)
          returns a String representation of the equation.
 java.lang.Object visit(ASTConstant node, java.lang.Object data)
           
 java.lang.Object visit(ASTFunNode node, java.lang.Object data)
           
 java.lang.Object visit(ASTVarNode node, java.lang.Object data)
           
 
Methods inherited from class org.lsmp.djep.xjep.ErrorCatchingVisitor
acceptCatchingErrors, addError, clearErrors, getError, getErrorsMessage, hasErrors
 
Methods inherited from class org.lsmp.djep.xjep.DoNothingVisitor
acceptChildrenAsArray, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FULL_BRACKET

public static final int FULL_BRACKET
All brackets are printed. Removes all ambiguity.

See Also:
Constant Field Values

COMPLEX_I

public static final int COMPLEX_I
Print Complex as 3+2 i

See Also:
Constant Field Values

sb

protected java.lang.StringBuffer sb

mode

protected int mode
The current mode for printing.


format

protected java.text.NumberFormat format
The NumberFormat object used to print numbers.

Constructor Detail

PrintVisitor

public PrintVisitor()
Creates a visitor to create and print string representations of an expression tree.

Method Detail

print

public void print(Node node,
                  java.io.PrintStream out)
Prints the tree descending from node with lots of brackets or specified stream.

See Also:
XJep.println(Node, PrintStream)

print

public void print(Node node)
Prints on System.out.


println

public void println(Node node,
                    java.io.PrintStream out)
Prints the tree descending from node with a newline at end.


println

public void println(Node node)
Prints on System.out.


toString

public java.lang.String toString(Node node)
returns a String representation of the equation.


append

public void append(java.lang.String s)
Add a string to buffer. Classes implementing PrintRulesI should call this add the


addSpecialRule

public void addSpecialRule(Operator op,
                           PrintVisitor.PrintRulesI rules)
Adds a special print rule to be added for a given operator. TODO Allow special rules for other functions, i.e. not operators.


visit

public java.lang.Object visit(ASTFunNode node,
                              java.lang.Object data)
                       throws ParseException
Specified by:
visit in interface ParserVisitor
Overrides:
visit in class DoNothingVisitor
Throws:
ParseException

visit

public java.lang.Object visit(ASTVarNode node,
                              java.lang.Object data)
                       throws ParseException
Specified by:
visit in interface ParserVisitor
Overrides:
visit in class DoNothingVisitor
Throws:
ParseException

visit

public java.lang.Object visit(ASTConstant node,
                              java.lang.Object data)
Specified by:
visit in interface ParserVisitor
Overrides:
visit in class DoNothingVisitor

formatValue

public void formatValue(java.lang.Object val,
                        java.lang.StringBuffer sb1)
Appends a formatted versions of val to the string buffer.

Parameters:
val - The value to format
sb1 - The StingBuffer to append to

formatValue

public java.lang.String formatValue(java.lang.Object val)
Returns a formated version of the value.


getMode

public int getMode()
Return the current print mode.


getMode

public boolean getMode(int testmode)

setMode

public void setMode(int mode,
                    boolean flag)
Set printing mode. In full bracket mode the brackets each element in the tree will be surrounded by brackets to indicate the tree structure. In the default mode, (full bracket off) the number of brackets is minimised so (x+y)+z will be printed as x+y+z.

Parameters:
mode - which flags to change, typically FULL_BRACKET
flag - whether to switch this mode on or off

setNumberFormat

public void setNumberFormat(java.text.NumberFormat format)

setMaxLen

public void setMaxLen(int i)
Sets the maximum length printed per line. If the value is not -1 then the string will be broken into chunks each of which is less than the max length.

Parameters:
i - the maximum length

getMaxLen

public int getMaxLen()
Returns:
the maximum length printed per line


http://www.singularsys.com/jep Copyright © 2007 Singular Systems