antlr1.txt
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:11k
源码类别:

编译器/解释器

开发平台:

Others

  1. ANTLR(1)               PCCTS Manual Pages                ANTLR(1)
  2. NAME
  3.      antlr - ANother Tool for Language Recognition
  4. SYNTAX
  5.      antlr [_o_p_t_i_o_n_s] _g_r_a_m_m_a_r__f_i_l_e_s
  6. DESCRIPTION
  7.      _A_n_t_l_r converts an extended form of context-free grammar into
  8.      a set of C functions which directly implement an efficient
  9.      form of deterministic recursive-descent LL(k) parser.
  10.      Context-free grammars may be augmented with predicates to
  11.      allow semantics to influence parsing; this allows a form of
  12.      context-sensitive parsing.  Selective backtracking is also
  13.      available to handle non-LL(k) and even non-LALR(k) con-
  14.      structs.  _A_n_t_l_r also produces a definition of a lexer which
  15.      can be automatically converted into C code for a DFA-based
  16.      lexer by _d_l_g.  Hence, _a_n_t_l_r serves a function much like that
  17.      of _y_a_c_c, however, it is notably more flexible and is more
  18.      integrated with a lexer generator (_a_n_t_l_r directly generates
  19.      _d_l_g code, whereas _y_a_c_c and _l_e_x are given independent
  20.      descriptions).  Unlike _y_a_c_c which accepts LALR(1) grammars,
  21.      _a_n_t_l_r accepts LL(k) grammars in an extended BNF notation -
  22.      which eliminates the need for precedence rules.
  23.      Like _y_a_c_c grammars, _a_n_t_l_r grammars can use automatically-
  24.      maintained symbol attribute values referenced as dollar
  25.      variables.  Further, because _a_n_t_l_r generates top-down
  26.      parsers, arbitrary values may be inherited from parent rules
  27.      (passed like function parameters).  _A_n_t_l_r also has a mechan-
  28.      ism for creating and manipulating abstract-syntax-trees.
  29.      There are various other niceties in _a_n_t_l_r, including the
  30.      ability to spread one grammar over multiple files or even
  31.      multiple grammars in a single file, the ability to generate
  32.      a version of the grammar with actions stripped out (for
  33.      documentation purposes), and lots more.
  34. OPTIONS
  35.      -ck _n
  36.           Use up to _n symbols of lookahead when using compressed
  37.           (linear approximation) lookahead.  This type of looka-
  38.           head is very cheap to compute and is attempted before
  39.           full LL(k) lookahead, which is of exponential complex-
  40.           ity in the worst case.  In general, the compressed loo-
  41.           kahead can be much deeper (e.g, -ck 10) _t_h_a_n _t_h_e _f_u_l_l
  42.           _l_o_o_k_a_h_e_a_d (_w_h_i_c_h _u_s_u_a_l_l_y _m_u_s_t _b_e _l_e_s_s _t_h_a_n _4).
  43.      -CC  Generate C++ output from both ANTLR and DLG.
  44.      -cr  Generate a cross-reference for all rules.  For each
  45.           rule, print a list of all other rules that reference
  46.           it.
  47.      -e1  Ambiguities/errors shown in low detail (default).
  48.      -e2  Ambiguities/errors shown in more detail.
  49.      -e3  Ambiguities/errors shown in excruciating detail.
  50.      -fe file
  51.           Rename err.c to file.
  52.      -fh file
  53.           Rename stdpccts.h header (turns on -gh) to file.
  54.      -fl file
  55.           Rename lexical output, parser.dlg, to file.
  56.      -fm file
  57.           Rename file with lexical mode definitions, mode.h, to
  58.           file.
  59.      -fr file
  60.           Rename file which remaps globally visible symbols,
  61.           remap.h, to file.
  62.      -ft file
  63.           Rename tokens.h to file.
  64.      -ga  Generate ANSI-compatible code (default case).  This has
  65.           not been rigorously tested to be ANSI XJ11 C compliant,
  66.           but it is close.  The normal output of _a_n_t_l_r is
  67.           currently compilable under both K&R, ANSI C, and C++-
  68.           this option does nothing because _a_n_t_l_r generates a
  69.           bunch of #ifdef's to do the right thing depending on
  70.           the language.
  71.      -gc  Indicates that _a_n_t_l_r should generate no C code, i.e.,
  72.           only perform analysis on the grammar.
  73.      -gd  C code is inserted in each of the _a_n_t_l_r generated pars-
  74.           ing functions to provide for user-defined handling of a
  75.           detailed parse trace.  The inserted code consists of
  76.           calls to the user-supplied macros or functions called
  77.           zzTRACEIN and zzTRACEOUT.  The only argument is a _c_h_a_r
  78.           * pointing to a C-style string which is the grammar
  79.           rule recognized by the current parsing function.  If no
  80.           definition is given for the trace functions, upon rule
  81.           entry and exit, a message will be printed indicating
  82.           that a particular rule as been entered or exited.
  83.      -ge  Generate an error class for each non-terminal.
  84.      -gh  Generate stdpccts.h for non-ANTLR-generated files to
  85.           include.  This file contains all defines needed to
  86.           describe the type of parser generated by _a_n_t_l_r (e.g.
  87.           how much lookahead is used and whether or not trees are
  88.           constructed) and contains the header action specified
  89.           by the user.
  90.      -gk  Generate parsers that delay lookahead fetches until
  91.           needed.  Without this option, _a_n_t_l_r generates parsers
  92.           which always have _k tokens of lookahead available.
  93.      -gl  Generate line info about grammar actions in C parser of
  94.           the form # _l_i_n_e "_f_i_l_e" which makes error messages from
  95.           the C/C++ compiler make more sense as they will point
  96.           into the grammar file not the resulting C file.
  97.           Debugging is easier as well, because you will step
  98.           through the grammar not C file.
  99.      -gs  Do not generate sets for token expression lists;
  100.           instead generate a ||-separated sequence of
  101.           LA(1)==_t_o_k_e_n__n_u_m_b_e_r.  The default is to generate sets.
  102.      -gt  Generate code for Abstract-Syntax Trees.
  103.      -gx  Do not create the lexical analyzer files (dlg-related).
  104.           This option should be given when the user wishes to
  105.           provide a customized lexical analyzer.  It may also be
  106.           used in _m_a_k_e scripts to cause only the parser to be
  107.           rebuilt when a change not affecting the lexical struc-
  108.           ture is made to the input grammars.
  109.      -k _n Set k of LL(k) to _n; i.e. set tokens of look-ahead
  110.           (default==1).
  111.      -o dir
  112.           Directory where output files should go (default=".").
  113.           This is very nice for keeping the source directory
  114.           clear of ANTLR and DLG spawn.
  115.      -p   The complete grammar, collected from all input grammar
  116.           files and stripped of all comments and embedded
  117.           actions, is listed to stdout.  This is intended to aid
  118.           in viewing the entire grammar as a whole and to elim-
  119.           inate the need to keep actions concisely stated so that
  120.           the grammar is easier to read.  Hence, it is preferable
  121.           to embed even complex actions directly in the grammar,
  122.           rather than to call them as subroutines, since the sub-
  123.           routine call overhead will be saved.
  124.      -pa  This option is the same as -p except that the output is
  125.           annotated with the first sets determined from grammar
  126.           analysis.
  127.      -prc on
  128.           Turn on the computation and hoisting of predicate con-
  129.           text.
  130.      -prc off
  131.           Turn off the computation and hoisting of predicate con-
  132.           text.  This option makes 1.10 behave like the 1.06
  133.           release with option -pr on.  Context computation is off
  134.           by default.
  135.      -rl _n
  136.           Limit the maximum number of tree nodes used by grammar
  137.           analysis to _n.  Occasionally, _a_n_t_l_r is unable to
  138.           analyze a grammar submitted by the user.  This rare
  139.           situation can only occur when the grammar is large and
  140.           the amount of lookahead is greater than one.  A non-
  141.           linear analysis algorithm is used by PCCTS to handle
  142.           the general case of LL(k) parsing.  The average com-
  143.           plexity of analysis, however, is near linear due to
  144.           some fancy footwork in the implementation which reduces
  145.           the number of calls to the full LL(k) algorithm.  An
  146.           error message will be displayed, if this limit is
  147.           reached, which indicates the grammar construct being
  148.           analyzed when _a_n_t_l_r hit a non-linearity.  Use this
  149.           option if _a_n_t_l_r seems to go out to lunch and your disk
  150.           start thrashing; try _n=10000 to start.  Once the
  151.           offending construct has been identified, try to remove
  152.           the ambiguity that _a_n_t_l_r was trying to overcome with
  153.           large lookahead analysis.  The introduction of (...)?
  154.           backtracking blocks eliminates some of these problems -
  155.           _a_n_t_l_r does not analyze alternatives that begin with
  156.           (...)? (it simply backtracks, if necessary, at run
  157.           time).
  158.      -w1  Set low warning level.  Do not warn if semantic
  159.           predicates and/or (...)? blocks are assumed to cover
  160.           ambiguous alternatives.
  161.      -w2  Ambiguous parsing decisions yield warnings even if
  162.           semantic predicates or (...)? blocks are used.  Warn if
  163.           predicate context computed and semantic predicates
  164.           incompletely disambiguate alternative productions.
  165.      -    Read grammar from standard input and generate stdin.c
  166.           as the parser file.
  167. SPECIAL CONSIDERATIONS
  168.      _A_n_t_l_r works...  we think.  There is no implicit guarantee of
  169.      anything.  We reserve no legal rights to the software known
  170.      as the Purdue Compiler Construction Tool Set (PCCTS) - PCCTS
  171.      is in the public domain.  An individual or company may do
  172.      whatever they wish with source code distributed with PCCTS
  173.      or the code generated by PCCTS, including the incorporation
  174.      of PCCTS, or its output, into commercial software.  We
  175.      encourage users to develop software with PCCTS.  However, we
  176.      do ask that credit is given to us for developing PCCTS.  By
  177.      "credit", we mean that if you incorporate our source code
  178.      into one of your programs (commercial product, research pro-
  179.      ject, or otherwise) that you acknowledge this fact somewhere
  180.      in the documentation, research report, etc...  If you like
  181.      PCCTS and have developed a nice tool with the output, please
  182.      mention that you developed it using PCCTS.  As long as these
  183.      guidelines are followed, we expect to continue enhancing
  184.      this system and expect to make other tools available as they
  185.      are completed.
  186. FILES
  187.      *.c  output C parser.
  188.      *.cpp
  189.           output C++ parser when C++ mode is used.
  190.      parser.dlg
  191.           output _d_l_g lexical analyzer.
  192.      err.c
  193.           token string array, error sets and error support rou-
  194.           tines.  Not used in C++ mode.
  195.      remap.h
  196.           file that redefines all globally visible parser sym-
  197.           bols.  The use of the #parser directive creates this
  198.           file.  Not used in C++ mode.
  199.      stdpccts.h
  200.           list of definitions needed by C files, not generated by
  201.           PCCTS, that reference PCCTS objects.  This is not gen-
  202.           erated by default.  Not used in C++ mode.
  203.      tokens.h
  204.           output #_d_e_f_i_n_e_s for tokens used and function prototypes
  205.           for functions generated for rules.
  206. SEE ALSO
  207.      dlg(1), pccts(1)