make_dparser(1)                  User Manuals                  make_dparser(1)



NAME
       make_dparser - D Parser Generator

SYNOPSIS
       make_dparser [options] grammar

DESCRIPTION
       make_dparser  is a scannerless GLR parser generator based on the Tomita
       algorithm. It is self-hosted and very easy to use. Grammars are written
       in  a  natural  style  of EBNF and regular expressions and support both
       speculative and final actions.

OPTIONS
       -l     Toggle longest match lexical ambiguity resolution.  When ON  the
              scanner  only recognizing the longest matching tokens in a given
              state. This provides an easy way to build grammars for languages
              which use longest match lexical ambiguity resolution (e.g. ANSI-
              C, C++). (OFF by default)

       -T     Toggle building of a tokenizer for START.  When ON,  instead  of
              generating a unique scanner for each state (i.e. a 'scannerless'
              parser), generate a single scanner (tokenizer)  for  the  entire
              grammar.   This  provides an easy way to build grammars for lan-
              guages which assume a tokenizer (e.g. ANSI C). (OFF by default)

       -H -1/0/1
              Write header, 0 : no, 1 : yes, -1 : only if not empty.

       -t 0/1 Token type, 0 : #define, 1 : enum.

       -C     Toggle computing whitespace states.  If 'whitespace' is  defined
              in  the  grammar,  then use it as a subparser to consume whites-
              pace. (ON by default)

       -A     Toggle computing states for  all  non-terminals.   Ensures  that
              there  is  a  unique  state for each non-terminal so that a sub-
              parsers can be invoked for that non-terminal. (OFF by default)

       -i tag Tag for grammar data structures so that multiple sets of  tables
              can be included in one file/application. (defaults to 'gram')

       -b blocks
              Number  of  blocks  to  which scanner tables are broken up into.
              Larger numbers permit more sharing with more overhead.  4  seems
              to be optimal for most grammars. (defaults to 4) files.

       -p     Toggle  setting  of  operator  priority  from rules.  Setting of
              operator priorities on operator tokens can increase the size  of
              the  tables but can permit unnecessary parse stacks to be pruned
              earlier. (OFF by default)

       -r     Toggle use of right recursion  for  EBNF  productions.   Do  not
              change  this  unless you really know what you are doing. (OFF by
              default)

       -L     Toggle writing of line numbers.  Used to debug the parsing table
              generator itself. (ON by default)

       -v     Increase verbosity.

       -d     Increase debugging.

       -h     Display help.

ENVIRONMENT
       All  the  options  are available through environment variables with the
       names:

       D_MAKE_PARSER_HEADER, D_MAKE_PARSER_TOKEN, D_MAKE_PARSER_GRAMMAR_IDENT,
       D_MAKE_PARSER_SCANNER_BLOCKS, D_MAKE_PARSER_SET_PRIORITY,
       D_MAKE_PARSER_WRITE_LINE_DIRECTIVES, D_MAKE_PARSER_VERBOSE,
       D_MAKE_PARSER_DEBUG.

FEATURES
       The features are covered in the documentation.  See the README file.

FILES
       None.

NO WARRANTIES
       This  program  is  distributed  in the hope that it will be useful, but
       WITHOUT ANY  WARRANTY;  without  even  the  implied  warranty  of  MER-
       CHANTABILITY  or  FITNESS  FOR A PARTICULAR PURPOSE.  See the COPYRIGHT
       for more details.

SEE ALSO
       flex(1), yacc(1), bison(1)

       D Parser Home Page: http://dparser.sourceforge.net/

       The BSD General Public License.

AUTHOR
       John Plevyak.  Use <jplevyak at users.sourceforge.net> to contact.




Unix                               Mar 2003                    make_dparser(1)
