[0.3.4] * enhanced the AWK interpreter to be more compatible to AWK - no more semicolon needed to terminate a statement with ASE_AWK_NEWLINE on [0.3.3] * enhanced the AWK interpreter to allow multiple BEGIN/END blocks. * enhanced the parser to handle ("abc" ++ k) as ("abc" . ++k) when ASE_AWK_IMPLICIT is on. * fixed a memory leak bug in the following context. BEGIN { d = 90; x[30] = d; /* Reference count for d was not properly decremented * when a map slot is assigned with the same value as * the previous value. */ x[30] = d; } * fixed a control-flow bug in the following context. function error() { exit (1); } function getx() { if (x == 2) error(); return x++; } function gety() { return y++; } BEGIN { x = 0; y = 0; print getx() + gety(); print getx() + gety(); /* this following line should not have been printed as * exit() is executed in getx(). */ print getx() + gety(); print getx() + gety(); } * redefined the variable scope * removed ASE_AWK_UNIQUEFN and ASE_AWK_SHADING by refining the scoping rule * fixed a bug in handling >> when ASE_AWK_SHIFT is off * added ASE_AWK_EVARRED * added five operators - <<=, >>=, &=, ^=, |= [0.3.2] * fixed a build problem for x64 target in MSVC2005 [0.3.1] * added to the awk interpreter the capibility to manipulate global variables - added ase_awk_addglobal, ase_awk_delglobal (awk/parse.c) - added Awk::addGlobal, Awk::deleteGlobal (awk/Awk.hpp, awk/Awk.cpp) - added Awk::Run::setGlobal, Awk::Run::getGlobal (awk/Awk.hpp, awk/Awk.cpp) - added Awk::AddGlobal, Awk::DeleteGlobal (net/Awk.hpp, net/Awk.cpp) - added Awk::Run::SetGlobal, Awk::Run::GetGlobal (net/Awk.hpp, net/Awk.cpp) - enhanced ase_awk_getglobalname * added three new options - ASE_AWK_RESET, ASE_AWK_MAPTOVAR, ASE_AWK_PABLOCK * enhanced Awk::dispatchFunction to set a more accurate error code (awk/Awk.cpp) * enhanced the JNI binding to integrate most of the changes so far. * fixed a bug - memory leak if a null statement or a block with no statements are present in an AWK program. (awk/parse.c) - memery leak if a return value is set by an intrinsic function but it ends up with an error. (awk/run.c - eval_call) * changed the access modifier for the Awk::Source::Source from public to protected. * renamed ase_awk_addbfn & ase_awk_delbfn to ase_awk_addfunc & ase_awk_delfunc respectively. * started the source code documentation of awk/Awk.hpp. * enhanded test programs. [0.3.0] * added ase_awk_setword to enable customization of keywords and intrinsic function names. * added ase_awk_seterrmsg to set the error message to be any string given * added setWord/unsetWord method to the awk c++ class (awk/Awk.cpp) * added setErrorString method to the awk c++ class (awk/Awk.cpp) * added setWord/unsetWord method to the awk java class (awk/Awk.java) * added the error code ASE_AWK_ELXDIG to indicate a wrong digit in octal number tokenization. * added setWord/unsetWord method to the awk com module (com/Awk.cpp) * added the .NET interface to the awk interpreter (net/Awk.cpp net/StdAwk.cpp) * changed the wrong macro name WIN32 to _WIN32 in utl/stdio.h * changed test/awk/Awk.cpp to include an option(-w) to utilize the setWord method. * changed test/awk/AseAwk.java to include an option(-w) to utilize the setWord method. * enhanced awk/map.c to support automatic rehashing [0.2.0] * fixed bug (nextofile shown as nextfile in source output) * fixed bug (nextofile not allowed in the BEGIN and END block) * fixed bug (ASE_MALLOC/ASE_FREE defined wrongly causing sample programs to crash in the debug mode when compiled with MSVC/C++. * fixed bug (the first character of the next record lost when RS are multiple characters) * fixed bug (the last field of the last record lost when RS are multiple characters) * added awk c++ classes (awk/Awk.hpp awk/Awk.cpp awk/StdAwk.hpp awk/StdAwk.cpp) * added c++ sample program (test/awk/Awk.cpp) * changed test/awk/AseAwk.java to be funtionally identical to test/awk/Awk.cpp * changed the way to invoke the main function (utl/main.h utl/main.c) [0.1.0] * initial release