Before running b(), we should decide how to organize the program's source
code, using one or more source files. Even though the example is simple, it is
good practice to define all user-defined functions in source files of their
own. For tt(rpn) this means that a source file (tt(main.cc)) is constructed
holding tt(main), and a file tt(parser/lex.cc) containing the lexical
scanner's implementation. Note that I've put all the parser's files in a
separate directory as well (also see section ref(LAYOUT)).

In  url(rpn's parser)(demos/rpn/parser) directory the file tt(grammar)
contains the grammar specification. B() constructs a parser class and a
parsing member function from this file after issuing the command:
        verb(
    b() grammar
        )
    From this, b() produced the following files:
    itemization(
    itt(Parser.h), the parser class definition;
    itt(Parserbase.h), the parser's em(base) class definition, defining, among
other, the grammatical tokens to be used by externally defined lexical
scanners;
    itt(Parser.ih), the em(internal header file), to be included by all
implementations of the parser class' members;
    itt(parse.cc), the parsing member function.
    )
    By default, tt(Parserbase.h) and tt(parse.cc) will be em(re-created) each
time b() is re-run. tt(Parser.h) and tt(Parser.ih) may safely be modified
by the programmer, e.g., to add new members to to the parser class. These two
files will not be overwritten by b(), unless explicitly instructed to do
so. 
