Download



CodeWorker is distributed under the terms of the GNU Lesser General Public License.
The Sun Solaris version compiles under CC v8 correctly since version 3.5.
The Mac version compiles under Mac OS X 10.3 correctly since version 3.4.
The Linux version compiles under gcc 3.2 20020927.
CodeWorker runs under Cygwin correctly since version 2.09.

Under Linux/Unix, please read the Makefile before compiling.

Under Windows platform, you might have to download the DLLs below:
  • From version 3.5 of the binary: runtime DLLs of VC++ 7.1 msvcp71.dll and msvcr71.dll in "‰SystemRoot‰/System32".
  • Up to version version 3.4 of the binary: runtime DLL of VC++ 6.0 msvcp60.dll in "‰SystemRoot‰/System32".
Since the version 3.10.3, binary and source packages are signed by a GnuPG signature. You can import the public key of the signature stored in GnuPG_PubKey.txt and then check the integrity of the package, typing:
    gpg --verify <CodeWorker_WIN/SRCx_y.zip>.asc <CodeWorker_WIN/SRCx_y.zip>
where <CodeWorker_WIN/SRCx_y.zip>.asc can be found with the description of the package.

Please do not hesitate to contact us for any trouble (source recompiling, binaries, constructive criticisms, suggestions, ...).

 To subscribe to new releases.

CodeWorker 3.10.4, 27may2005
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries -4 CodeWorker_WIN3_10_4.zip
Any platform (?) sources -4 CodeWorker_SRC3_10_4.zip
Changes
Date Type Caller Description
26may2005 improvement - The function saveProject() accepts a facultative parameter nodeToSave, which is a subtree you wish to save to XML; by default, the saved node is the global tree project.
26may2005 improvement - The functions loadFile() and loadBinaryFile accept a facultative parameter length indicating the number of bytes to read.
26may2005 bug_fix - A template-based script using the automatic indent mode (function incrementIndentLevel) for generating text, may badly copy rough text after a new line starting with more tabulations than the current indent level.
18may2005 bug_fix - A translation script, passed as a relative path in the function translateString, may haven't been found.
CodeWorker 3.10.3, 16may2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 596975 CodeWorker_WIN3_10_3.zip CodeWorker_WIN3_10_3.zip.asc
Any platform (?) sources 1817717 CodeWorker_SRC3_10_3.zip CodeWorker_SRC3_10_3.zip.asc
CodeWorker 3.10, 22apr2005
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 596988 CodeWorker_WIN3_10.zip
Any platform (?) sources 1807000 CodeWorker_SRC3_10.zip
Changes
Until the version 3.9.1, the scripting language didn't oblige to declare the variables before their use. From now, it is recommended and a warning message appears otherwise, but the beheviour doesn't change yet. This warning is going to mutate to an error message in future versions of the interpreter.

In front of a variable name never declared, the behaviour remains the same: the variable is inserted to the this context automatically as a new attribute.

The rationale is firstly for improving the reliability of scripts, detecting bad variable names like spelling or foolish mistake in the name, and secondly to prepare the introduction of Object-Oriented Programming into CodeWorker.

Date Type Caller Description
20apr2005 improvement - As stipulated in the remarks heading, a warning occurs if a variable is used whitout having been declared before. These warnings are going to become an error message in the future, so it is strongly recommended to hunt them now, by declaring these variables as local or global or as attributes belonging to the this context tree (default behaviour).
19apr2005 function -
  • function addToDate(date : stringformat : stringshifting : string) : string
    ParameterTypeDescription
    datestringthe date to change
    formatstringthe format to apply on the reading of the \samp{shifting} argument
    shiftingstringthe offset values to apply on the date, whose meanings are known by the \samp{offset} argument

    Change a date by applying offset values on its internal representation. The internal representation holds the year / month / day and hour / minute / second and millisecond fields. You choose what fields to shift, giving a date format as the first argument, and an offset value for each fields seen in the format as the second argument.

    The field types have the same syntax as in the function formatDate, except that the field values might be negative.
    For instance, if the field type is "%m", the month must occupy 2 digits maximum for a positive offset, and 3 characters for a negative offset, the first one being the sign.

    The offsets are applied in the order they are read, from the left-hand side to the right.

    The function returns the value of the date after applying the shift.

14apr2005 bug_fix - About the parsing: #nextStep had no effect on the jump operator when put in a repeat regular expression.
13apr2005 function -
  • procedure allFloatingLocations(list : tree)
    ParameterTypeDescription
    listtreefloating location names and their position

    Populates the argument list with all floating location registered to the current output stream, such as the entry key is the floating location name and the entry value is the position in the stream.

12apr2005 bug_fix - Correction of a bug introduced in the version 3.9: the BNF predefined non-terminal #readNumeric wasn't returning the correct floating-point value after the reading of a signed exponent.
CodeWorker 3.9, 08apr2005
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 589051 CodeWorker_WIN3_9.zip
Any platform (?) sources 1733461 CodeWorker_SRC3_9.zip
Changes
Date Type Caller Description
07apr2005 function -
  • function removeFloatingLocation(key : string) : int
    ParameterTypeDescription
    keystringname of an existing floating position into the output stream

    Removes the floating location attached to key and returns its position. If the floating location belongs to a parent output stream, it is removed from the parent.

    The function returns a negative integer if the floating location doesn't exist.

06apr2005 behaviour - The predefined tree node null was added, and means a null pointer. Used for writing plugins, for instance, passing a tree node as a null pointer to C++.
10mar2005 bug_fix - The directive #nextStep should have been available in a repeating regular expression ([...]*), but wasn't.
17feb2005 function -
  • function sqrt(x : double) : double
    ParameterTypeDescription
    xdoublethe number we want to calculate the square root

    Calculates the square root of x.

    An invalid number causes the function to throw an error.

16feb2005 function Laurent DOMINGOS
  • procedure sleep(millis : int)
    ParameterTypeDescription
    millisinthow many milliseconds the execution must be suspended

    The procedure suspends the execution for millis milliseconds.

10feb2005 bug_fix - Correction on the C++ native translation of BNF template non-terminals.
10feb2005 bug_fix - In functions parseAsBNF() and translate() and expand() and generate(), looking for the BNF-parsing script filename starts at the current directory of the callee.
10feb2005 bug_fix - During the native translation of scripts to C++, the leader script might have an empty C++ short file name in a rare use-case.
27jan2005 function -
  • procedure incrementIndentLevel()
    Increments the indentation level, used to indenting output files automatically while writing.

    If first call, it enables the indent-mode: each time a text will have to be written at the beginning of a line, the line will be indented, depending on the indentation level.

    Call the function decrementIndentLevel() to decrease the indentation.

  • function decrementIndentLevel() : bool
    Decrements the indentation level, used to indenting output files automatically while writing.

    If the function returns false, the indentation level is worth zero and it disables the indent-mode. Otherwise, each time a text will have to be written at the beginning of a line, the line will be indented, depending on the indentation level.

    Call the function incrementIndentLevel() to increase the indentation.

21jan2005 bug_fix Markus MARB The native C++ translation of a constant tree wasn't implemented yet. A constant tree is, for instance:

{"a", {"yellow", "red"}, "submarine"}

20jan2005 function -
  • function isNumeric(number : string) : bool
    ParameterTypeDescription
    numberstringa floating-point number in text representation

    This predicate checks whether the string passed by parameter is a floating-point or not.

CodeWorker 3.8.4, 19jan2005
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 577662 CodeWorker_WIN3_8_4.zip
Any platform (?) sources 1690184 CodeWorker_SRC3_8_4.zip
Changes
Date Type Caller Description
19jan2005 bug_fix Lionel AUROUX The predefined BNF terminal #readCChar had the same behaviour as #readCString, instead of consuming a C-like constant character.
18jan2005 bug_fix - the assignment operator setall was causing a memory leak or a crash on attributes pointing to a reference, while freeing the memory.
11jan2005 bug_fix - The BNF directive #skipIgnore wasn't applying correctly the implicit copy: the scanned text was repeated twice.
10jan2005 bug_fix - An ellipsis exception may have occured when a dynamic library module was compiled with a too ancient version of CodeWorker ("CW4dl.h" or "CppParsingTree.h" or "CGRuntime.h" has changed).
17dec2004 bug_fix - The and-or junction BNF operator (symbol &| was returning a failure when the right-hand side member was unable to match the input.
15dec2004 bug_fix - The interpreter crashed when an argument had the same name as the BNF rule. Now, an explicit error message occurs.
08dec2004 improvement - During the parsing of a floating-point number, the dot is consumed only if it doesn't exist a second dot just behind the first one:
  • if you parse a double at the beginning of "2. is a floating point", 2. is consumed.
  • if you parse a double at the beginning of "2..n", 2 only is consumed.
03dec2004 improvement Eric NICOLAS Now, the compiler detects an attempt to declare the reserved variables this or project as local or global.
02dec2004 function -
  • procedure insertElementAt(list : treerefkey : stringposition : int)
    ParameterTypeDescription
    listtreerefan array of nodes
    keystringthe entry key of the element to insert
    positionintwhere to insert the new element, starting at 0

    Insert a new element to list, at a position given by the argument position. The argument key indicates the key of this element, which is built empty.

    If the key is an empty string, then the key is supposed to be worth the size of the list automatically.

    You can access the new element by writing either:

    list#[position]


    or

    list[key]

29nov2004 feature - Add of #ignore(Ada) for eliminating Ada comments and whitespaces in a extended-BNF script.
CodeWorker 3.8.3, 19nov2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 574602 CodeWorker_WIN3_8_3.zip
Any platform (?) sources 1668657 CodeWorker_SRC3_8_3.zip
Changes
Date Type Caller Description
19nov2004 bug_fix Laurent RIESTERER A temporary file, used during the code generation of a source file, was badly formed: the path was containing anti-slashes, which may have caused some troubles on non-Windows platforms.
14nov2004 bug_fix - About expressions embedded between tags @@ in a template-based script: starting with a constant string was causing an unrelevant syntax error.
04nov2004 bug_fix - the assignment operator setall wasn't copying attributes pointing to a reference correctly.
26oct2004 improvement - Now, the binding to the dynamic library libcurl is resolved while using the cURL API. So, the dynamic library doesn't need to be present if you don't use the cURL API.
29oct2004 bug_fix - An imperative parse script (parseFree()) wasn't reentrant completely: an ellipsis exceptions might have appeared in some cases.
26oct2004 bug_fix - In the native C++ translation of scripts for building a standalone executable:
  • aVariable#front ignored during the C++ translation in some cases,
  • the keyword cascading wasn't taken into account while translating foreach and forfile,
  • the return value of a BNF symbol (piece of text matched) wasn't concatenated correctly when needed (functionality rarely required).
CodeWorker 3.8.2, 07oct2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 571481 CodeWorker_WIN3_8_2.zip
Any platform (?) sources 1659058 CodeWorker_SRC3_8_2.zip
Changes
Date Type Caller Description
03oct2004 improvement - Now, the local and localref and global statements accept more than one variable declaration, separated by commas.

Example:

// declaration of 3 local variables in one shot
local a = "1", b, c= 2;

03oct2004 feature - Now, the path of dynamic library plugins can end with a "_d" suffix for debug version.

Examples for a plugin named MyModule:

MyModulecw_d.dll
MyModulecw_d.so

03oct2004 feature - Add of setIntValue() and setDoubleValue() in the interpreter interface, as declared in "CW4dl.h", used for building C++ dynamic library plugins intended to extend CodeWorker.
26sep2004 bug_fix - Infinite loop in saveProject(), when the root graph project has a child referring to a node.
19sep2004 bug_fix - Sometimes, the interpreted was detecting a syntax error on the extended-BNF directive #catch, while the writing was correct.
18sep2004 bug_fix Thierry WILMOT Now, the declaration of a local variable my-local-variable must be explicit, before calling the BNF directives #insert(my-local-variable) or #pushItem(my-local-variable).
07sep2004 bug_fix - the function composeHTMLLikeString() recognizes the apostrophe correctly, and doesn't invert this character anymore.
07sep2004 improvement - An error message raises if the BNF directive #nextStep is used outside of a jump or repeat regular expression.
CodeWorker 3.8, 24aug2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 570036 CodeWorker_WIN3_8.zip
Any platform (?) sources 1648999 CodeWorker_SRC3_8.zip
Changes
Date Type Caller Description
22aug2004 improvement - Now, the function scanFiles() accepts a path in the short filename pattern.

Example:

scanFiles(dir, "project/examples", "src/*.cpp", true)


will filter:

"project/examples/airplanes/src/*.cpp"
"project/examples/boats/yacht/src/*.cpp"
"project/examples/bicycles/src/*.cpp"

15aug2004 bug_fix - The native C++ translation of CodeWorker‘s scripts has been corrected on some features:
  • the BNF directive #skipIgnore,
  • the BNF binary operator ‘|>‘,
14aug2004 improvement - A new format type was added to the function completeDate: ‘%|‘. Once the date has been iterated up to the end, if the format wasn‘t applied on it completely, an error occurs, except if ‘%|‘ stands at the current position in the format.
14aug2004 feature - The statement exit was added, for exiting CodeWorker with an error code. It expects an integer expression, for determining the value of the error code that the interpreter will have to return to the system.
14aug2004 feature - The new predefined BNF directive #readUptoIgnore was added. It reads all characters up to encountering the first insignificant one. Insignificant characters are those to ignore between BNF terminal matchings, and specified thanks to the directive #ignore.
10aug2004 improvement - Now, the native C++ translation of CodeWorker‘s scripts generates a GNU makefile of the project.
08aug2004 deprecated - The functions getInputLocation() and setInputLocation() replace the respective obsolete getLocation() and setLocation() writings.
07aug2004 bug_fix - The native C++ translation of CodeWorker‘s scripts has been corrected on some features:
  • initialization of predefined global variables (_ARGS and _REQUEST),
  • C++ writing of variable expressions in general,
  • implicit copy in a translation script,
07aug2004 bug_fix - The date conversion of a two-digits year to a four-digit one was erroneous in the function formatDate().

Click here to look up all past downloads of CodeWorker

 CodeWorker is maintained by Cedric Lemaire. Please send a mail to Submit a bug or feature