Home | History | Annotate | Download | only in antlr3
      1 """ @package antlr3
      2 @brief ANTLR3 runtime package
      3 
      4 This module contains all support classes, which are needed to use recognizers
      5 generated by ANTLR3.
      6 
      7 @mainpage
      8 
      9 \note Please be warned that the line numbers in the API documentation do not
     10 match the real locations in the source code of the package. This is an
     11 unintended artifact of doxygen, which I could only convince to use the
     12 correct module names by concatenating all files from the package into a single
     13 module file...
     14 
     15 Here is a little overview over the most commonly used classes provided by
     16 this runtime:
     17 
     18 @section recognizers Recognizers
     19 
     20 These recognizers are baseclasses for the code which is generated by ANTLR3.
     21 
     22 - BaseRecognizer: Base class with common recognizer functionality.
     23 - Lexer: Base class for lexers.
     24 - Parser: Base class for parsers.
     25 - tree.TreeParser: Base class for %tree parser.
     26 
     27 @section streams Streams
     28 
     29 Each recognizer pulls its input from one of the stream classes below. Streams
     30 handle stuff like buffering, look-ahead and seeking.
     31 
     32 A character stream is usually the first element in the pipeline of a typical
     33 ANTLR3 application. It is used as the input for a Lexer.
     34 
     35 - ANTLRStringStream: Reads from a string objects. The input should be a unicode
     36   object, or ANTLR3 will have trouble decoding non-ascii data.
     37 - ANTLRFileStream: Opens a file and read the contents, with optional character
     38   decoding.
     39 - ANTLRInputStream: Reads the date from a file-like object, with optional
     40   character decoding.
     41 
     42 A Parser needs a TokenStream as input (which in turn is usually fed by a
     43 Lexer):
     44 
     45 - CommonTokenStream: A basic and most commonly used TokenStream
     46   implementation.
     47 - TokenRewriteStream: A modification of CommonTokenStream that allows the
     48   stream to be altered (by the Parser). See the 'tweak' example for a usecase.
     49 
     50 And tree.TreeParser finally fetches its input from a tree.TreeNodeStream:
     51 
     52 - tree.CommonTreeNodeStream: A basic and most commonly used tree.TreeNodeStream
     53   implementation.
     54   
     55 
     56 @section tokenstrees Tokens and Trees
     57 
     58 A Lexer emits Token objects which are usually buffered by a TokenStream. A
     59 Parser can build a Tree, if the output=AST option has been set in the grammar.
     60 
     61 The runtime provides these Token implementations:
     62 
     63 - CommonToken: A basic and most commonly used Token implementation.
     64 - ClassicToken: A Token object as used in ANTLR 2.x, used to %tree
     65   construction.
     66 
     67 Tree objects are wrapper for Token objects.
     68 
     69 - tree.CommonTree: A basic and most commonly used Tree implementation.
     70 
     71 A tree.TreeAdaptor is used by the parser to create tree.Tree objects for the
     72 input Token objects.
     73 
     74 - tree.CommonTreeAdaptor: A basic and most commonly used tree.TreeAdaptor
     75 implementation.
     76 
     77 
     78 @section Exceptions
     79 
     80 RecognitionException are generated, when a recognizer encounters incorrect
     81 or unexpected input.
     82 
     83 - RecognitionException
     84   - MismatchedRangeException
     85   - MismatchedSetException
     86     - MismatchedNotSetException
     87     .
     88   - MismatchedTokenException
     89   - MismatchedTreeNodeException
     90   - NoViableAltException
     91   - EarlyExitException
     92   - FailedPredicateException
     93   .
     94 .
     95 
     96 A tree.RewriteCardinalityException is raised, when the parsers hits a
     97 cardinality mismatch during AST construction. Although this is basically a
     98 bug in your grammar, it can only be detected at runtime.
     99 
    100 - tree.RewriteCardinalityException
    101   - tree.RewriteEarlyExitException
    102   - tree.RewriteEmptyStreamException
    103   .
    104 .
    105 
    106 """
    107 
    108 # tree.RewriteRuleElementStream
    109 # tree.RewriteRuleSubtreeStream
    110 # tree.RewriteRuleTokenStream
    111 # CharStream
    112 # DFA
    113 # TokenSource
    114 
    115 # [The "BSD licence"]
    116 # Copyright (c) 2005-2008 Terence Parr
    117 # All rights reserved.
    118 #
    119 # Redistribution and use in source and binary forms, with or without
    120 # modification, are permitted provided that the following conditions
    121 # are met:
    122 # 1. Redistributions of source code must retain the above copyright
    123 #    notice, this list of conditions and the following disclaimer.
    124 # 2. Redistributions in binary form must reproduce the above copyright
    125 #    notice, this list of conditions and the following disclaimer in the
    126 #    documentation and/or other materials provided with the distribution.
    127 # 3. The name of the author may not be used to endorse or promote products
    128 #    derived from this software without specific prior written permission.
    129 #
    130 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    131 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    132 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    133 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    134 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    135 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    136 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    137 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    138 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    139 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    140 
    141 __version__ = '3.4'
    142 
    143 # This runtime is compatible with generated parsers using the following
    144 # API versions. 'HEAD' is only used by unittests.
    145 compatible_api_versions = ['HEAD', 1]
    146 
    147 from constants import *
    148 from dfa import *
    149 from exceptions import *
    150 from recognizers import *
    151 from streams import *
    152 from tokens import *
    153