1	package antlr;
2	
3	/**
4	 * <b>SOFTWARE RIGHTS</b>
5	 * <p>
6	 * ANTLR 2.5.0 MageLang Institute, 1998
7	 * <p>
8	 * We reserve no legal rights to the ANTLR--it is fully in the
9	 * public domain. An individual or company may do whatever
10	 * they wish with source code distributed with ANTLR or the
11	 * code generated by ANTLR, including the incorporation of
12	 * ANTLR, or its output, into commerical software.
13	 * <p>
14	 * We encourage users to develop software with ANTLR. However,
15	 * we do ask that credit is given to us for developing
16	 * ANTLR. By "credit", we mean that if you use ANTLR or
17	 * incorporate any source code into one of your programs
18	 * (commercial product, research project, or otherwise) that
19	 * you acknowledge this fact somewhere in the documentation,
20	 * research report, etc... If you like ANTLR and have
21	 * developed a nice tool with the output, please mention that
22	 * you developed it using ANTLR. In addition, we ask that the
23	 * headers remain intact in our source code. As long as these
24	 * guidelines are kept, we expect to continue enhancing this
25	 * system and expect to make other tools available as they are
26	 * completed.
27	 * <p>
28	 * The ANTLR gang:
29	 * @version ANTLR 2.5.0 MageLang Institute, 1998
30	 * @author Terence Parr, <a href=http://www.MageLang.com>MageLang Institute</a>
31	 * @author <br>John Lilley, <a href=http://www.Empathy.com>Empathy Software</a>
32	 */
33	/**A GrammarAnalyzer computes lookahead from Grammar (which contains
34	 * a grammar symbol table) and can then answer questions about the
35	 * grammar.
36	 *
37	 * To access the RuleBlock for a rule name, the grammar symbol table
38	 * is consulted.
39	 *
40	 * There should be no distinction between static & dynamic analysis.
41	 * In other words, some of the easy analysis can be done statically
42	 * and then the part that is hard statically can be deferred to
43	 * parse-time.  Interestingly, computing LL(k) for k>1 lookahead
44	 * statically is O(|T|^k) where T is the grammar vocabulary, but,
45	 * is O(k) at run-time (ignoring the large constant associated with
46	 * the size of the grammar).  In English, the difference can be
47	 * described as "find the set of all possible k-sequences of input"
48	 * versus "does this specific k-sequence match?".
49	 */
50	public interface GrammarAnalyzer {
51		/**The epsilon token type is an imaginary type used 
52		 * during analysis.  It indicates an incomplete look() computation.
53		 * Must be kept consistent with Token constants to be between
54		 * MIN_USER_TYPE and INVALID_TYPE.
55		 */
56		// public static final int EPSILON_TYPE = 2;
57		public static final int NONDETERMINISTIC = Integer.MAX_VALUE; // lookahead depth
58		public static final int LOOKAHEAD_DEPTH_INIT = -1;
59	}
60