All Past Downloads



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".

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

 To subscribe to new releases.

CodeWorker 4.5.2, 02aug2008
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 666203 CodeWorker_WIN4_5_2.zip CodeWorker_WIN4_5_2.zip.asc
Any platform (?) sources 3530883 CodeWorker_SRC4_5_2.zip CodeWorker_SRC4_5_2.zip.asc
Changes
Date Type Caller Description
02aug2008 feature Franck Watteau Java API: add of an item into the array of a parse tree.
31jul2008 bug_fix Franck Watteau Java API: the execution of a parse/template-based/translation script before compiling the corresponding script now raises an exception rather than provoking a crash.
CodeWorker 4.5.1, 28jul2008
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 665464 CodeWorker_WIN4_5_1.zip CodeWorker_WIN4_5_1.zip.asc
Any platform (?) sources 3531944 CodeWorker_SRC4_5_1.zip CodeWorker_SRC4_5_1.zip.asc
Changes
Date Type Caller Description
27jul2008 improvement Lionel Auroux The syntax of a constant tree declaration has changed. It better describes arrays and subnodes.
27jul2008 improvement Lionel Auroux The procedure saveProject() now saves a parse tree to a specific text format when the file name ends with the extension ".txt". This format is the same as for a constant tree declaration.
27jul2008 function Lionel Auroux
  • procedure loadProject(XMLorTXTFileName : stringnodeToLoad : tree)
    ParameterTypeDescription
    XMLorTXTFileNamestringan input file whose content describes a node
    nodeToLoadtreethe node to populate from the file; if omitted, it is defaulted to the global variable \samp{project}

    Loads a parse tree previously saved thanks to saveProject().

27jul2008 bug_fix Thor #continue throwing their own syntax error messages now properly raise the error: the call stack displays the most relevant syntax error message instead of the most general.
27jul2008 improvement Thierry WILMOT During a debug session that executes a parse script, the current location in the parsed file (line/column) is displayed after each progression (step in/out) in the controlling sequence.
CodeWorker 4.5, 20jul2008
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 661894 CodeWorker_WIN4_5.zip CodeWorker_WIN4_5.zip.asc
Any platform (?) sources 3521278 CodeWorker_SRC4_5.zip CodeWorker_SRC4_5.zip.asc
Changes
Date Type Caller Description
14jul2008 bug_fix - A segmentation fault was appearing when default values were assigned to some parameters of instantiated template functions.
13jul2008 function -
  • function existDirectory(path : string) : bool
    ParameterTypeDescription
    pathstringpath name of the directory

    The function checks the existence of a directory specified by the path argument.

05may2008 feature Hugo Beauzee-Luyssen #foreach is a new BNF directive directive in charge of iterating on a BNF sequence.
04may2008 feature Hugo Beauzee-Luyssen #applyBNFRule is a directive to put into a piece of common script. Its purpose consists of calling a BNF non-terminal from inside common script embedded into a BNF script.
03may2008 feature David GIRON Syntax extension to express variable increment ($i++$; and decrement ($i--$;
03may2008 feature - New family of insignificant characters (extended BNF script): spaces. #ignore(spaces) consumes all space (ASCII 0x20) and tabulation characters encountered.
15dec2007 bug_fix Thierry WILMOT In some cases under Window platform, the interpreter is unable to start, due to an unitialized memory read.
CodeWorker 4.4, 21nov2007
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries -4 CodeWorker_WIN4_4.zip
Any platform (?) sources -4 CodeWorker_SRC4_4.zip
Changes
Date Type Caller Description
18nov2007 improvement David GIRON #break is now able to leave a BNF repeating sequence conditionally. The condition follows the directive name between parenthesis, exactly like a #check.
18nov2007 improvement David GIRON #continue can describe a custom error message. This message will be thrown instead of the default one ordinarly raised by the BNF engine as soon as a failure occurs in the rest of the BNF sequence.
18nov2007 function Benjamin GUESNEAU
  • procedure extendExecutedScript(scriptContent : string)
    ParameterTypeDescription
    scriptContentstringA piece of CodeWorker's script to compile at the end of the currently executed script

    Extend the currently executed CodeWorker's script with new instructions. The argument scriptContent is a piece of script to compile at the end of the executed script.

13oct2007 bug_fix Pierre Mitzrahi The call of equalTrees without declaring each tree parameter before caused a segmentation fault.
13oct2007 bug_fix Sergey Sikorskiy CodeWorker won't compile NetSocket.cpp wiht gcc 4.1.2 on x86_64 platform.
CodeWorker 4.3, 03aug2007
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 658669 CodeWorker_WIN4_3.zip CodeWorker_WIN4_3.zip.asc
Any platform (?) sources 3185080 CodeWorker_SRC4_3.zip CodeWorker_SRC4_3.zip.asc
Changes
Date Type Caller Description
28jul2007 feature Pierre Mitzrahi New BNF directive: #EOL. It consumes an end of line.
31jul2007 function -
  • function equalLastWrittenChars(text : string) : bool
    ParameterTypeDescription
    textstringstring value to compare

    Compare the text argument with last characters written in the output file.

25jul2007 option Benoit Barraud Add of a new option on the command line: -stdout
15jul2007 bug_fix Markus Marb A bug was fixed in hexadecimal conversion.
25jun2007 bug_fix Lionel Auroux GCC 4.0 was refusing to compile a source file of CodeWorker: "GrfForeach.h".
10jun2007 bug_fix Nicolas Marin CodeWorker didn't take into account UNC paths in MS-Windows properly.
CodeWorker 4.2, 01may2006
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 657270 CodeWorker_WIN4_2.zip CodeWorker_WIN4_2.zip.asc
Any platform (?) sources 3177724 CodeWorker_SRC4_2.zip CodeWorker_SRC4_2.zip.asc
Changes
Date Type Caller Description
29apr2006 feature - Addition of a new BNF directive: #readPythonString. A Python string is surrounded by simple quotes or double quotes. Moreover, it accepts triple-quoted strings.
CodeWorker 4.1.2, 02apr2006
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 653536 CodeWorker_WIN4_1_2.zip CodeWorker_WIN4_1_2.zip.asc
Any platform (?) sources 3171291 CodeWorker_SRC4_1_2.zip CodeWorker_SRC4_1_2.zip.asc
Changes
Date Type Caller Description
31mar2006 bug_fix - The loading policy of a dynamically-linked plugin was extremely restricted under Windows NT4, 2000 and more recent versions. The DLL was necessarily at the same place as CodeWorker's executable. Now, the interpreter also looks into include path and current working directory.
17mar2006 feature Mohamed Selim BEN ALI treeNode#root navigates directly to the root node of the parse tree that contains treeNode.
16mar2006 bug_fix - POST and GET HTTP requests (using cURL library) weren't working properly.
CodeWorker 4.1.1, 14mar2006
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 645305 CodeWorker_WIN4_1_1.zip CodeWorker_WIN4_1_1.zip.asc
Any platform (?) sources 3035271 CodeWorker_SRC4_1_1.zip CodeWorker_SRC4_1_1.zip.asc
Changes
Date Type Caller Description
11mar2006 bug_fix Mohamed Selim BEN ALI During the execution of a BNF-extended script through the C++/Java/C# API of CodeWorker, the use of BNF directives #insert and #pushItem was causing a crash.
31jan2006 bug_fix Justin CINJELJ Compile fix for Red Hat 9.
03jan2006 bug_fix - A bug was fixed in creating a new parse file from Eclipse.
CodeWorker 4.1, 07dec2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 645046 CodeWorker_WIN4_1.zip CodeWorker_WIN4_1.zip.asc
Any platform (?) sources 3032127 CodeWorker_SRC4_1.zip CodeWorker_SRC4_1.zip.asc
Changes
Date Type Caller Description
07dec2005 improvement - New Eclipse plugin for CodeWorker (version 1.1.0). It can work with CodeWorker 4.0.4 or higher. User's manual about the plugin is accessible from the menu item "Help/Help Contents".
07dec2005 improvement - the extbf{-debug} switch now admits an optional parameter to ask for a remote socket control of the debugging session.
04dec2005 improvement - The coverage recording of output files wasn't working perfectly. This process consists of keeping a trace of the generation: what piece of the output file was generated by what instruction of the template-based script.
03dec2005 bug_fix - On Windows, if may have arrived that a generated file was locked for writing.
27nov2005 option - Add of a new option on the command line: -report
CodeWorker 4.0.3, 21nov2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 637312 CodeWorker_WIN4_0_3.zip CodeWorker_WIN4_0_3.zip.asc
Any platform (?) sources 3027365 CodeWorker_SRC4_0_3.zip CodeWorker_SRC4_0_3.zip.asc
Changes
Date Type Caller Description
20nov2005 feature - An Eclipse plugin now exists for CodeWorker's script. This first version is limited to syntax highlighting, text hover over built-in functions, and integrated documentation. The reference manual and a tutorial are accessible from the "Help Contents" menu topic.
19nov2005 bug_fix - The UNIX/Linux makefile hadn't been updated: reference to 3 source files was lacking.
19nov2005 bug_fix - "GrfExecutionContext.cpp" was unable to compile under UNIX.
04nov2005 bug_fix - Trouble on #readNumeric, when the first character to parse starts with a plus symbol.
CodeWorker 4.0.2, 28oct2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 636820 CodeWorker_WIN4_0_2.zip CodeWorker_WIN4_0_2.zip.asc
Any platform (?) sources 2958365 CodeWorker_SRC4_0_2.zip CodeWorker_SRC4_0_2.zip.asc
Changes
Date Type Caller Description
13sep2005 feature Guillermo M. Zambrino Now, CodeWorker has a logo! Many thanks to its author: Guillermo M. Zambrino.
28oct2005 feature DSM workshop/OOPSLA 2005 A functionality has been added to code generation, to know where the output comes from. In CodeWorker, an output file is generated by a template-based script. The directive #coverage asks for the recording of every script position giving rise to a piece of the output file.

This directive is located anywhere in the script to study, and requires a variable the code generation engine will populate with coverage data. The variable will be a list of sorted segments, entirely determined by their starting position in the output and by the position of the corresponding script instruction. These positions are respectively stored in attributes output and script.

An added information is assigned to the node representing the segment. It specifies the type of script instruction, belonging to one of the following values:

  • R: rough text,
  • W: expression, variable or call to a writeText()-family procedure,
  • I: call to a insertText()-family procedure,
  • O: call to overwritePortion() procedure,

Example:

rough text @this.name@ EOL
@

#coverage(project.coverage)

Let say that this.name is worth "VARIABLE_CONTENT". The script generates the following output file:

rough text VARIABLE_CONTENT EOL

The variable project.coverage is then worth the following list:

   ["0"] = "R"
     |--+
       script = 12
       output = 0
   ["1"] = "W"
     |--+
       script = 21
       output = 11
   ["2"] = "R"
     |--+
       script = 29
       output = 27

CodeWorker 4.0.1, 19aug2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 628411 CodeWorker_WIN4_0_1.zip CodeWorker_WIN4_0_1.zip.asc
Any platform (?) sources 2307422 CodeWorker_SRC4_0_1.zip CodeWorker_SRC4_0_1.zip.asc
Changes
Date Type Caller Description
18aug2005 bug_fix - The compilation of the scripting language failed on functions where the first argument was optional and when the function was called without parameter.
18aug2005 improvement - Now, the procedure incrementIndentLevel() and the function decrementIndentLevel() accept both an optional argument, giving the indentation depth to add or remove.
15aug2005 improvement - The native translation of CodeWorker scripts to C++ has been improved, to get ready for the version 4.1, which will be the first release where scripts can substitute the CodeWorker scripting language for Java (C++ intervenes here!).
15aug2005 bug_fix - In extended-BNF scripts, the directive #matching wasn't recording properly the coverage of parsed files by production rules.
31jul2005 feature - New BNF statement modifier #debug: it opens a debug session, applied on the rest of the BNF sequence.
CodeWorker 4.0, 28jul2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 621344 CodeWorker_WIN4_0.zip CodeWorker_WIN4_0.zip.asc
Any platform (?) sources 2223437 CodeWorker_SRC4_0.zip CodeWorker_SRC4_0.zip.asc
Changes
Major evolution of CodeWorker. It is now possible to integrate the CodeWorker's features about parsing and code generation into C++, Java and .NET applications.
Date Type Caller Description
27jul2005 feature Alan CYMENT Implementation of a .NET assembly for CodeWorker.
24jul2005 feature - The native translation of CodeWorker scripts to C++ produces a C++ source code, which can be optimized. The C++ optimizer is an external program-transformation script that the developer can reuse to implement his own transformations.
24jul2005 option - Add of a new option on the command line: -c++2target
23jul2005 feature - Implementation of Java interface for CodeWorker (JNI library and org.codeworker.jni package).
17jul2005 feature - Add of the new BNF directive #matching(variable):
this directive is put outside the production rules. It informs the BNF engine to record the coverage of the input text by the production rules. Concretely, the BNF engine stores into a variable the list of all production rules of the grammar and all areas they match in the input text, once the execution has finished. The BNF engine populates the variable specified by the directive.

      Tree structure of the variable populated by the BNF engine
      for #matching(variable):
     
      * variable
        |
        +- rules[]: list of production rules (signatures only),
        |
        +- areas[]: table of positions in the input text, the
          | key is worth the position P; no item value
          +- begin[]: (optional) table for every rule starting
          | | at the position P, the key being worth the
          | | ending position Pf (decreasing order)
          | +- []: list of all rules matching [P, Pf] exactly,
          |
          +- end[]: (facultative) table for every rule ending at
            | the position P, the key being worth the
            | starting position Pi (increasing order)
            +- []: list of all rules matching [Pi, P] exactly,

28jun2005 improvement Jon SCOBIE During a debugging session, break/watch points are numbered for an easy deletion.
23jun2005 improvement Brian WELCH Now, the function traceObject() can display a tree up to a given depth (second optional parameter).
CodeWorker 3.12, 24jun2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 604656 CodeWorker_WIN3_12.zip CodeWorker_WIN3_12.zip.asc
Any platform (?) sources 2110946 CodeWorker_SRC3_12.zip CodeWorker_SRC3_12.zip.asc
Changes
Date Type Caller Description
23jun2005 feature Jon SCOBIE A debugger session now accepts conditional breakpoints and handles watchpoints on variables, conditional or not. These new features are very efficient to accelerate the debugging.

Conditions conform to the syntax of usual CodeWorker expressions. When a break/watchpoint is activated, a block of instructions can be executed. The block is a piece of CodeWorker script.

CodeWorker 3.11.0.1, 07jun2005
Platform Type Size Archive GnuPG signature
WINDOWS 98/2000/NT/XP binaries 601319 CodeWorker_WIN3_11_0_1.zip CodeWorker_WIN3_11_0_1.zip.asc
Any platform (?) sources 1825643 CodeWorker_SRC3_11_0_1.zip CodeWorker_SRC3_11_0_1.zip.asc
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 : iteratornewIt : treeref) : bool
    ParameterTypeDescription
    oldItiteratorthe original iterator to duplicate
    newIttreerefcopy of the original iterator

    Duplicates an iterator or returns false if oldIt isn't an iterator.

  • function createIterator(i : iteratorlist : treeref) : bool
    ParameterTypeDescription
    iiteratoriterator to initialize
    listtreerefthe 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 : iteratorlist : treeref) : bool
    ParameterTypeDescription
    iiteratoriterator to initialize
    listtreerefthe 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
    ParameterTypeDescription
    iiteratoriterator 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
    ParameterTypeDescription
    iiteratoriterator 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
    ParameterTypeDescription
    iiteratoriterator 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 : 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().
CodeWorker 3.7, 04aug2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 562617 CodeWorker_WIN3_7.zip
Mac OS X 10.3 (Panther) binaries 10162156 CodeWorker_MAC3_7.zip
Any platform (?) sources 1640339 CodeWorker_SRC3_7.zip
Changes
Date Type Caller Description
01aug2004 behaviour Thierry WILMOT The format of error messages has changed:
    

<filename>(line-number): <error-message>


replaces:
    

"<filename>" line line-number): <error-message>

01aug2004 feature - The new predefined non-terminal BNF symbol #readCChar reads a C-like constant character. A C-like character stands between single quotes and admits the escape character \.
01aug2004 improvement - The interpreter executes a BNF parsing if the first argument on the command line has file extension being worth ".cwp".
29jul2004 behaviour - The procedure copySmartFile() has become a function, returning true when it executes the copy.
25jul2004 bug_fix - When a variable was declared twice local to the same scope (not recommended), a bug was appearing: once the second local declaration was reached, if the local variable was previously referring to another, the referenced variable was cleaned.
24jul2004 bug_fix - Some regressions were corrected on the native C++ translation of CodeWorker‘s scripts.
19jul2004 function -
  • function countInputCols() : int
    Determines the column number in the line where the parse cursor points to.
  • function countOutputCols() : int
    Determines the column number in the line where the output stream cursor points to.
CodeWorker 3.6, 09jul2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 546963 CodeWorker_WIN3_6.zip
Any platform (?) sources 1616738 CodeWorker_SRC3_6.zip
Changes
Date Type Caller Description
06jul2004 feature - A new BNF directive was added: #moveAhead. Located into a BNF sequence, it means that after a valid matching of the rest of the sequence, the cursor has necessary moved.

Example:

#moveAhead [A]? [B]?

If A doesn‘t match, then B must match so that the scan has read at least one character.

06jul2004 function Stephane PELTIER
  • function getShortFilename(pathFilename : string) : string
    ParameterTypeDescription
    pathFilenamestringa file name with its path

    Returns the short name of a file, meaning without the path. It is composed of a radical + an extension.

06jul2004 improvement - Floating-point numbers representation: a better removal of superfluous digits after the dot.
23jun2004 feature Eric NICOLAS Add of a new switch to pass on the command line: -nologo reclaims that the interpreter doesn‘t write the copyright about CodeWorker in the shell while starting.
15jun2004 improvement - A new way to pass parameters to the command line:

codeworker <script-file> <arg1> ... <argN> [<switch>]*

It is more natural than the equivalent writing:

codeworker -script <script-file> -args <arg1> ... <argN> [<switch>]*

}
06jun2004 bug_fix - Some regressions were corrected on the native C++ translation of CodeWorker‘s scripts.
23may2004 improvement - Now, the foreach statement can iterate a list sorted by its values instead of its keys.

Example:

      local list;
      insert list["silverware"] = "tea spoon";
      insert list["Mountain"] = "Everest";
      insert list["SilverWare"] = "Tea Spoon";
      insert list["Boat"] = "Titanic";
      insert list["acrobat"] = "Circus";
     
      traceLine("Sorted list in a classical order:");
      foreach i in sorted by_value list {
          traceLine("\t" + i + " -> " + key(i));
      }

Output:
    Titanic -> Boat
    Everest -> Mountain
    Tea Spoon -> SilverWare
    Circus -> acrobat
    tea spoon -> silverware

CodeWorker 3.5, 07may2004
Platform Type Size Archive
WINDOWS 98/2000/NT/XP binaries 534804 CodeWorker_WIN3_5.zip
Any platform (?) sources 2487789 CodeWorker_SRC3_5.zip
Changes
Under Windows platforms, the binaries are compiled with VC++ 7.1 for now. If you don‘t have the DLLs msvcp71.dll and msvcr71.dll on your computer, please download them from the header of the download page.
Date Type Caller Description
06may2004 improvement - Now, the function getLastDelay() works even during the measurement of the time consuming (controlling sequence under a delay statement modifier): it returns the time elapsed since the beginning of the time-keeping.
28apr2004 improvement - A better precision for floating point numbers (up to 24 digits, instead of 6 before).
25apr2004 feature - A new preprocessor instruction called #line. It forces the compiler to change the current value of the script line counter.
25apr2004 bug_fix - Calling the function translateString() with the first parameter being the translation script directly (and not the file name of the translation script) was raising the error: "cannot ask for the value of a piece of script".
24apr2004 feature - A tree node can point to an external data, holding the value of the node. This external data might be any kind of data structure, inheriting from the class ExternalValueNode declared in the header file "ExternalValueNode.h". The scripting language has accepted external functions. Now, it also accepts external data.

An example is encapsulating a Trolltech-Qt widget for building GUI, implemented in a plugin or in an application linking with the CodeWorker‘s library, and handled from a CodeWorker‘s script.

24apr2004 improvement - Have reduced the memory space allocation of a tree node.
16apr2004 bug_fix - The function ‘putEnv()‘ now works on pure Unix platforms.
15apr2004 function -
  • function computeMD5(text : string) : string
    ParameterTypeDescription
    text