ETXL 0.12 - Jun 27, 2005 ======================== -If clauses now implement classical if statement semantics. See report "A Closer Look at If Clause Semantics in ETXL" -Added case statment, which implements auto-failure semantics, previously implemented by if clauses. Again see above mentioned report. -Fixed an error in the usage information, help switch is -help, not --help -Added an option, -P, for doing only preprocessing. Helps in debugging the normalizer. -Signal handlers that do nothing were installed. For termination we rely on the child receiving the same signal then dying. In the parent the wait call returns and we exit cleanly. This is better than the previous method whereby both would simultaneously exit. In practice the parent exited first and the child left its message on the user's prompt line. ETXL 0.11 - Mar 27, 2005 ======================== -Replaced the pipe-to-sed implementation of type name mangling with a TXL one. Much more verbose, but removes the external dependency. -Ported the etxl wrapper from a bash script to a C++ program. There is a unix version as well as a windows of the platform depenent code. -The etxl wrapper now uses a compiled version of the etxl transformation rather than invoking the txl interpreter. -Now that a windows port is included, the build system supports compiling the windows version with Cygwin + MinGW. -In the normalization code, when looking for strings that may be compounds and "..." is encountered emit it right away rather than rejecting the match and searching for a shorter match (credit Geert Janssen). -In the scoping pass, watch out for exports of previously bound local variables. Since local varables have their name mangled, we must link the export to the new name. -Wrapper now properly handles user args by passing them to the user's txl process. -Remove etxlc program. The same function is now performed with the -X flag. ETXL 0.10 - Nov 23, 2004 ======================== -Fixed a bug in modularity. Also find public statements that are not the first statement in the module. -Don't emit an error if a private entity in a public module conflicts with an entity in the current module. -Generate an error when a type argument and it's use both have a modifier. -Fixed bug in writing out of repl stack write top. The write to the top was being written out when there was an if statement in the rule it was a replacement. This would cause a write to the top when the replace and the by are not separated by part an if and there was no push. Now is flag based. Only writes to the top when there was a push. ETXL 0.9 - Nov 10, 2004 ======================= -Removed private keyword and replaced it's usage, which was only in local data structures, not in the grammar. Allows 'private' to be used as an identifier or part of the the user language. -Fixed a bug in rule/type parameters. Since adding type checking of rule parameters, rule parameters that used a type parameter that preceeded it in the parameter list always failed the type check. Type substitutions are now performed before the type check. -Fixed bug in using strongly typed rule parameters. Strong typing removed the type, which happened before rule parameters where checked so the rule passed as an argument failed the type check. -Don't use the same define rule_or_func for both the type of rule parameters and for encoding the type of rule during the if statement walks. Was inhibiting the correct behaviour of isRule (functions with rule parameters were being reported as rules). -Support the binding of out parameters that are not prevously forwarded, but have their type specified in the out list. ETXL 0.8 - Oct 4, 2004 ====================== -If statement fixes, must compute offset of if_stack_set_top that come after by clauses, can't just write them to the output. -Don't quote ... even if it is a compound because it has meaning in TXL. -Documented (in DEFICIENCES file) a bug in strongly typed rule parameters. ETXL 0.7 - Sep 14, 2004 ======================= -Added install target. -Recursive calls to nested rules now work properly. -Out parameters support binding of the anonymous variable so that specific out parameters can be ignored on a per-invocation basis. -Objectless rules are now processed last so they work in combination with if statements. ETXL 0.6 - Sep 10, 2004 ======================= -Objectless rules can now be applied to anything, not just '_'. -Changed error messages to reflect new name. -Fixed scoping of nested rules, parameters were scoped on the parent's pass and the in/out parameters were not being picked up for processing. -Fixed type parameter lookups that were broken by the scoping code. -If a where clause fails, pop the out parameters the same way as if there was a success. This makes the binding of the out parameters independent of the success of the where clause. -avlmod.txl: Fixed bug in rebalancing and used more if statements to simplify the rebalancing code. Reduces code duplication. Also make use of type parameters. ETXL 0.5 - Sep 3, 2004 ====================== -Implemented modularity, strong typing, scoping, nested rules, rules that must match and objectless rules. -Many bug fixes and improvements. TxlTxl 0.4 - May 5, 2004 ======================== -Better handling of TXL program arguments, including the passing of -I to the norm program. -Support the use of type keyword in place of define. -Fixes to support the concurrent use of rule parameters plus out parameters. -Manually fail a replacement when control is passed to an if branch that contains the replacement. This is required because the control passing mechanism used (by clause) cannot propigate back the status of the replacement. -Force a space after all quoted lits since the quoted lit '( is not output with a following space. TxlTxl 0.3 - Apr 15, 2004 ========================= -If statement implementation now uses a stack of integers for reporting if test status instead of global variables. This allows recursive functions that to work correctly since multiple invocations will use separate status vars instead of the same global var. -Implemented out parameters. An out parameter binds a value from a called function in the calling function. If the variable is never bound then the caller cannot proceed past the point of invocation and fails its match. If the variable is bound more than once (say by a rule that matches multiple subtrees) then a value bound in the calling function is the last value in the called function -The 'then' keyword can be omitted in then blocks that have no clauses. -Added a testing script which runs test cases and compares generated output against expected output. -Improved modularity, made fixes so that new features can work together. -Various bug fixes. TxlTxl 0.2 - Mar 27, 2004 ========================= -Implemented if statements. As far what statements can go where anything goes (inlcluding ifs nested in if tests or then blocks) as long as: 1. The entire rule is either all replace or all match. 2. All paths through the rule are valid rules on their own (ie only one replace/by statement, nothing after a by, etc). TxlTxl 0.1 - Mar 14, 2004 ========================= -Initial version supporting type and rule parameters.