colm 0.12.0 - Feb 1, 2014 ------------------------- * allow matching against reference types * refcount fixes for setting references * can use 'in' expr to search ref types * can take refs of temps in expresssions * error handling improvements * fixed the colm input open check * added a default capture name to all production definition rhs elements, defaults to the type name * allow var ref as the target of a send construct * added the cast operator * return nil from open if file open fails * improvements to locals downrefs (large func offset overflow and iters) * fixed the typeref for stdout and stderr, now working * evaluate print arguments left to right * improved separation of declare, resolve/lookup, and compile passes * lookup of types in cons/pats uses the cons type or pattern tree namespace * added the void type, useful for calling func in send expression * can re-enter namespaces that already exist * don't search parent scopes when qualifications are present * added a new syntax for literal tokens; a single backtick is starts the literal, ends at whitespace or ] in second or greater position * removed comma as separator in literal statement * single-quoted strings are now treated like double-quoted strings; they may appear in expressions and are concatenated with the other string forms * new syntax for collect-ignore tokens "token -" * added the system function, which calls C's system * fixes for contiguous stack regions that fixes some segfaults * don't use stack top offsets in print instructions * allow make_tree anywhere * don't use sp offset for make_tree, removes need for contiguous * eliminated stack offset from make-token instruction * print function names in call op debug stmts colm 0.11 - May 26, 2013 ------------------------ * Require <> around ref and ptr type declarations (eg: ptr) * Added production labels, which follow a production with the form :Label. Labels are exposed in the C++ interface using an enum. They are prefixed with _ to avoid conflict with member access functions. * It's now possible to access Tree::tokdata from the C++ interface. * The print, stream print, stream push, and stream append operations all no longer trim trees by default. This makes these functions consistent with constructor, which refrains from trimming to avoid extra work. A construct with a tree trim is accomplished with an additional operator. The above print and stream operations now have the same usage patterns. * Fixes to prodNum preservation through tree copy, and to the parser colm 0.10 - Apr 18, 2013 ------------------------ * Implemented the colm parser in colm. Bootstrapping with a parse tree construction in C++. Using that generated parser to to parse the colm grammar, from which the primary parser is produced. * Improved error reporting. * Added some tracking of progress through a stream for better backtracking over includes that are pushed onto a stream. * Updated the vim syntax, no longer highlighting parser, list, etc (types). * Parse expressions are now returning trees again. Returning the parser results in semantics inconsistent with many other areas of the program. * Can now put '.' or eos on the end of a send expression to terminate the parse * Removed the original send syntax (<<). * Lowercased and otherwise improved the C interface. * The default binary name no longer has .bin suffix. * Fixed -o option, now using -c to mean compile on (library). The export filename options are now -e and -x. colm 0.9 - Feb 19, 2013 ----------------------- * The parse loop now scans data that is owned by the input stream. It is copied into a contiguous block in the scanner when the token is consumed. * The syntax of lexical regions was altered to omit the name. The curlies were replaced with lex ... end syntax. * The syntax of namespaces were altered. Curlies were replaced with namespace ... end. colm 0.8 - Dec 29, 2012 ----------------------- * The parse statement now includes a call to the finish operation. It returns a value of type parser. The result tree and any error message can be retrieved from this object using 'tree' and 'error' members. * Dropped curly brackets and the name from the syntax of lexical region defintition. Using "lex ... end" * Dropped curly brackets from the syntax of namespaces and context blocks. Using "namespace N ... end N" and "context N ... end N" * Now have a growable stack instead of a large, fixed, pre-allocated stack.