Welcome to the Parser Webpage!
What is it?
The Parser is a Java class developed by Pavel Safronov at MSTE of UIUC. It is designed to take any string expression ("2+3", "sin(pi/4)", "cos(x^2+y^2)/(x^2+y^2)*10"), and find its value. The Parser supports most commonly used functions and operations and is equipped to solve equations that would otherwise be too tedious, or too numerous, to attempt by hand.
The Parser was made to be used in the 3D Grapher (Under development as of January 30, 2004, completed June 17, 2004), but it can be used in a number of applications. Two such examples are the XY Grapher and the Polar Grapher. These examples are very rough and only up on this site as an example of the Parser's power, and nowhere near an example of what a finished applet is.
How does it work?
The Parser takes an expression that you supply, along with any constants and variables, and breaks it down into Reverse Polish Notation (RPN). While changing the expression into RPN, the Parser replaces all constants with their numeric values. The RPN set of instructions are then stored in a stack. When Evaluate is called, the stack is evaluated. Parsing the expression takes a much longer time than evaluating the RPN stack, since the Parser was designed with a grapher in mind, knowing that the function that explains the graph need only be parsed once and then evaluated a number of times with different variable values, so it is best suited for occasions where speed is imperative and the expressions that need to be evaluated are constant for the time that the Parser is needed.
How do we use it?
You don't. It's not ready yet.
Are there more applets on the way?
The 3D Grapher is now complete.
Here are some screenshots from inside the 3D Grapher.
History
June 17, 2004
3D Grapher applet complete
Website updated. New 3D Grapher pictures.
June 3, 2004
Minor website corrections and additions.
June 2, 2004
Removed the links to downloading the Parser.
Next updates to this site will include a link to an almost-complete version
of the 3D Grapher.
Feb. 5, 2004
"Decimal mark" bug fixed. The Parser will accept ".0" or "0." or "0.0", and will return 0, but will return false from the Parse function if it encounters "." All the files on this site (the XY Grapher and the Polar Grapher) have been updated with the new Parser files.
Feb. 3 & 4, 2004
Bug found when trying to Parse/Evaluate an expression that contains lone decimal
marks. Bug not yet fixed.
Spherical graphing integrated into the 3D Grapher. More styles on the
way.
All Parser.class files on this site are not updated with the latest edition
of the Parser. The next update will be after the "decimal mark"
bug is fixed.
Feb. 1 & 2, 2004
Added "shortcut" versions of the functions Parse and Evaluate. You
are now not required to specify constants, their values, and variables if your
expression uses none.
Added quickEvaluate. Parses and evaluates the expression, returning the answer.
Does not allow constants or variables. Perfect for quick evaluations inside
and outside the Parser class.
Evaluate now allows the string representing the value of a constant to contain
a "simple" expression ("2*pi", "sqrt(2)"). A "simple"
expression is not allowed to use constants, other than pi and e, or variables,
but can otherwise be as complex as necessary. The expression is evaluated using
quickEval.
Parse now allows the same use while entering the value of a constant. Once again,
only "simple" expressions.
Parser not released to the public, developed and updated while working
on the 3D Grapher.
January 31, 2004
No updates to the Parser.
Website updated.
January 30, 2004
Started Parser webpage and history log.
Parser in final stages of development.
Bug with implicit negation fixed.
Added new function:
step(x): 0 if x < 0, 1 otherwise