# Download

CodeWorker is distributed under the terms of the GNU Lesser General Public License.
### CONTENT Overview Why use this tool? Getting Started (47kb) Documentation Tutorials Repository of scripts Download Related links ### MAIN VERSIONS #### Loading of packages since version 3.0 #### Socket handling since version 2.17 #### BNF of the language since version 2.14 #### CGI program since version 2.10 #### XSL pattern matching since version 2.08 #### Sending HTTP requests since version 2.07 #### Handling of binary files since version 2.04 ### CONTACT US |
| 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.11.0.1, 07jun2005
Platform | Type | Size | Archive
WINDOWS 98/2000/NT/XP | binaries | -4 | CodeWorker_WIN3_11_0_1.zip
Any platform (?) | sources | -4 | CodeWorker_SRC3_11_0_1.zip
Changes
Date | Type | Caller | Description
07jun2005 | bug_fix | - | The C++ source file `ExprScriptFunction.cpp` wasn't capable to compile correctly; fixed. Two C++ source files had to be removed from the Makefile: `GrfCreateIterator.cpp` and `GrfCreateReverseIterator.cpp`; fixed.
CodeWorker 3.11, 03jun2005
Platform | Type | Size | Archive | GnuPG signature
WINDOWS 98/2000/NT/XP | binaries | 600188 | CodeWorker_WIN3_11.zip | CodeWorker_WIN3_11.zip.asc
Any platform (?) | sources | 1838717 | CodeWorker_SRC3_11.zip | CodeWorker_SRC3_11.zip.asc
Changes
Date | Type | Caller | Description
03jun2005 | deprecated | - | In precedent versions, a function prototype may accept the parameter type index (rarely used). It is now obsolete and changed to iterator.
- 03jun2005 | function | Jon SCOBIE | function duplicateIterator(oldIt : iterator, newIt : treeref) : bool
  Parameter | Type | Description
  oldIt | iterator | the original iterator to duplicate
  newIt | treeref | copy of the original iterator
- Duplicates an iterator or returns `false` if oldIt isn't an iterator. function createIterator(i : iterator, list : treeref) : bool
  Parameter | Type | Description
  i | iterator | iterator to initialize
  list | treeref | the iterator will point to the beginning of this list
- The variable `i` will become an iterator pointing to the first item of the list. If the list is empty, there is no iterator created and the function returns `false`. `i` must have been declared before. function createReverseIterator(i : iterator, list : treeref) : bool
  Parameter | Type | Description
  i | iterator | iterator to initialize
  list | treeref | the iterator will point to the end of this list
- The variable `i` will become an iterator pointing to the last item of the list and will iterate in the reverse order. If the list is empty, there is no iterator created and the function returns `false`. `i` must have been declared before. function index(i : iterator) : int
  Parameter | Type | Description
  i | iterator | iterator of a \samp{foreach} statement
- Returns the position of the item the iterator points to. The position in the list begins counting at 0. function prec(i : iterator) : bool
  Parameter | Type | Description
  i | iterator | iterator of a \samp{foreach} statement or pointing to items of a list
- The iterator will now point to the precedent item of the list and returns `true` if exists. function next(i : iterator) : bool
  Parameter | Type | Description
  i | iterator | iterator of a \samp{foreach} statement or pointing to items of a list
The iterator will now point to the next item of the list and returns `true` if exists.
CodeWorker 3.10.4, 27may2005
Platform | Type | Size | Archive | GnuPG signature
WINDOWS 98/2000/NT/XP | binaries | 597722 | CodeWorker_WIN3_10_4.zip | CodeWorker_WIN3_10_4.zip.asc
Any platform (?) | sources | 1816779 | CodeWorker_SRC3_10_4.zip | CodeWorker_SRC3_10_4.zip.asc
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 : string, format : string, shifting : string) : string
  Parameter | Type | Description
  date | string | the date to change
  format | string | the format to apply on the reading of the \samp{shifting} argument
  shifting | string | the 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)
  Parameter | Type | Description
  list | tree | floating 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
  Parameter | Type | Description
  key | string | name 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
  Parameter | Type | Description
  x | double | the 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)
  Parameter | Type | Description
  millis | int | how 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
  Parameter | Type | Description
  number | string | a 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 : treeref, key : string, position : int)
  Parameter | Type | Description
  list | treeref | an array of nodes
  key | string | the entry key of the element to insert
  position | int | where 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