| Parser - Does the parsing - i.e it's the brains of the code.
Copyright (C) 2000-2003 murlen.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
author: murlen author: Joachim Van der Auwera version: 1.12 version: modifications by Joachim Van der Auwera version: 14.08.2001 added support for indexed variables version: 20.08.2001 -clean handling of setVar with null value version: - cleaner handling of if with null condition version: - make sure running empty script does nothing version: - extra info when throwing an exception (with surrounding lines) version: - changed operator prioritues for && and || version: - fixed bug in parseIf with handling of nesting of if clauses with else version: - check for missing endif or endwhile (caused infinit loops) version: - check for a null to prevernt excepion in parseExpr version: 28.08.2001 version: - call to host.getVar() replaced by host.F() (and added version: proper exception handling, in that case) version: 31.08.2001 version: - test on if condition being of correct type re-introduced version: 10.09.2001 version: - added < <= > >= on strings version: 23.11.2001 version: - allow adding strings with anything version: 04.12.2001 version: - allow add/subtract/multiply/divide int with double version: 24.04.2002 version: - fixed a bug in parsing of nested if clause when one of the nested items contains a version: "then" token with the statements on the next line(s) (test for TT_EOL instead of TT_EOF) version: 30.04.2002 version: - handle all exceptions on all getVarEntry, setVarEntry and callFunctionEntry calls version: 06.05.2002 version: - error messages now unique version: - TT_EOF handled better in some cases version: 05-06.08.2002 version: - removed some redundant code version: - introduced parseFunctionEnd to catch functions without return (it worked before, so...) version: 21.10.2002 version: - added == for FSObject instances version: 30.10.2002 object now allowed as function parameter version: 07.11.2002 better error handling when parsing an expression version: 20.11.2002 make != work for objects version: 15.03.2003 getContext() added JVDA version: 17.09.2003 removed checking for mismatched quotes and brackets, and moved to LineLoader version: 23.11.2003 recycle LexAnn objects (saves object allocation/release) JVDA version: 24.11.2003 some extra (smallish) speed improvements (also to reduce garbage a little bit) version: 25.02.2004 version: - proper evaluation of FSObject with contained boolean/integer for if/while version: - more powerful compare for FSObject instance with something else version: 14.04.2004 elsif opperator support |