Copper is a free, open-source Java-based integrated scanner and parser generator. Copper uses a modified scanning algorithm, context-aware scanning, which uses parsing context to resolve lexical ambiguities.
This allows for more declarative parser specifications, especially of embedded and extensible languages.
Java-based LALR(1) parser gen- erator with expanded parsing capability compared to the Java-based CUP (http://www2. cs.tum.edu/projects/cup/) or the C-based Bison (http://www.gnu.org/software/ bison/) .
Like CUP and Bison, Copper takes the specification of a formal grammar and generates from it a program (specifically, a Java class) that can parse the language of that grammar.
However, unlike CUP and Bison, Copper gives you everything necessary to do so. Parsers from most generators require an external scanner built by another tool, a scanner genera- tor — JLex (http://www.cs.princeton.edu/~appel/modern/java/JLex/) is usually used with CUP and Flex (http://flex.sourceforge.net/) with Bison — in order to work.
Copper generates both the scanner and the parser from a single specification and puts them in a single Java class; this integration enables Copper to parse a larger class of grammars than CUP or Bison.
What's New in This Release: [ read full changelog ]
A continuation of the re-design started in Copper 0.6, Copper 0.7 features:
· A re-written compile-time that works more than twice as fast as, and in less than half the memory of, Copper 0.6's.
· A re-written ANT task with access to all of Copper's command-line parameters.
· Full integration of the new Java API into the parser generator.
· Further optimizations to the parser runtime.
· A sound implementation of the modular determinism analysis.
· Unicode support in the CUP skin.
· Improved error reporting.
· Expanded support for multiple input skins, output targets, and compilation pipelines.