|File Search||Catalog||Content Search|
Since bisonc++ generates the parser class as well as the parsing function. The class can easily be provided with additional members without needing polymorphic functions. Consequently, classes generated by bisonc++ have no virtual members and actually have but one public member: parse(), replacing the old-style bison and bison++ yyparse() function.
Bisonc++ offers many options, among which an option to define classes generated by bisonc++ in a separate namespace. This allows developers to define additional symbols, even outside of the class generated by bisonc++, without encountering name-collision problems. With bisonc++, artificial means to prevent name-collisions, like bison and bison++'s yy-convention are not required anymore when using bisonc++. Bisonc++ merely generates C++ code. If C code is required, bison should be used. Bisonc++'s grammar requirements are highly compatible with bison's requirements, so converting a bison grammar into a bisonc++ grammar should be fairly simple.
In addition to the bisonc++ parser generator itself and several skeleton files, the package contains an extensive man-page, a full manual rewritten after the original bison manual, and several examples.
Some history: Bisonc++ versions 0.98 is a complete rewrite of an LALR(1) parser generator, as described in Aho, Sethi and Ullman's (1986) book `Compilers' (a.k.a. the `Dragon Book'). Version 0.98 was completed in May 2005. Another major rewrite was completed one year later, May 2006, resulting in version 1.00.
This package provides the supplemental documentation for Bisonc++.
This hierarchy defines the header and the implementation dependencies among the classes. The topmost class is not dependent on any class. Lines should be read down-to-up to finde the the lowest class in the hierarchy on which a given class depends (e.g., LookaheadSet depends on Rules, and possibly uses the classes used by Rules; RmReduction does not depend on any other class). more»
About the lexical scanner ========================= Bisonc++ uses a lexical scanner generated by flex. The file bisonc++/scanner/yylex.cc depends on a file FlexLexer.h having different contents over different `flex' versions. Bisonc++ therefore also depends on flex being installed, callable as the program `flex'. Starting with Bisonc++ versi more»
This file describes the lookahead-propagation procedure as used by Bisonc++ A more extensive description is found in documentation/manual/algorithm.yo Start with the following simple grammar: 1 run$: run 2 run: one 3 run: two X 4 one: 5 two: one This grammar produces the following states: S0: run$: . run (kernel) more»
Bisonc++ 2.0.0 uses a grammar specification file (parser/grammar) defining the input language that i more»
This file contains a short description about the way states and look-aheads (LA's) are constructed. more»
Run `build clean' to cleanup, `build demo' to create the program.
Most examples available before version 1.00 are now in the ../regression directory, where they are m more»
This is the same example as given in ../bison++Example.ORG, but this time it's adapted to bisonc++ more»