DOCUMENTATION. CONTACT. The Java Parser Generator. Java Compiler Compiler™ (JavaCC™) is the most popular parser generator for use with Java™ . By following the links from this page you should be able to obtain all necessary documentation on JavaCC. In addition to these links there is also some useful. This web page is a comprehensive list of all classes, methods, and variables available for use by a JavaCC [tm] user. These classes, methods, and variables are.

Author: Diramar Disar
Country: Togo
Language: English (Spanish)
Genre: Spiritual
Published (Last): 22 May 2010
Pages: 298
PDF File Size: 7.26 Mb
ePub File Size: 11.85 Mb
ISBN: 592-9-35147-628-6
Downloads: 87907
Price: Free* [*Free Regsitration Required]
Uploader: Kazibar

Otherwise, it applies to all the lexical states in the identifier list within the angular brackets. An expansion unit can be a parenthesized set of one or more expansion choices. You must remove left recursion javaccc writing your grammar rules in JavaCC. The smaller this number, the faster the parser. Then any legal parse of the expansion unit is one or more repetitions of a legal parse of the parenthesized set of expansion choices.

Ready to jump in?

The final user action within a conditional node scope can determine whether the node was created or not by calling the nodeCreated method. The signature of this method is: JavaCC performs many syntactic and semantic checks on the grammar file during parser generation. Note that the presence of these errors even if they are not detected and reported by setting this option to false can cause unexpected behavior from the generated parser.

This method throws a ParseError exception when there is a lexical error, i. They are both called with the current node as a parameter. Examples JJTree is distributed with some simple examples containing a grammar that parses arithmetic expressions.

However, the token manager’s behavior is. If the local lookahead specification is not at a choice point, then the syntactic lookahead is ignored – hence a default value is not relevant. To perform multiple parses during one run of your Java program, you will have to call the ReInit method to reinitialize your parser if it is static. If the compilation unit includes imports declarations, this is included in the generated parser and token manager files.


The methods must have the following signatures:. You notate a definite node like this:. Using JavaCC In practice, the scanning and parsing phases of a compiler are handled by code that is generated by a parser generator. Then the exception is rethrown.

There are two parts on the right hand side of an BNF production. If the expression evaluates to false and the local lookahead specification is at a choice pointthe current choice is not taken and the next choice is considered.

Instead all access must be made through the parser interface. That is, it trivially passes.

JavaCC – Wikipedia

There are also ways to make “private” tokens, and write complex regular expressions. After this is a list of grammar productions. If you have further questions, please do not hesitate to contact us. Click here to get to the JJTree documentation. The final user action in a node scope is different from all the others.

A conditional node that has a node descriptor expression that evaluates to false will not get added to the stack, nor have children added to it. Parsing functions can take in parameters, return results, and invoke blocks of arbitrary Java code. The default for this is true. In this case, these methods are no-ops.

Using JavaCC

Each regular expression production may contain any number of regular expression specifications. Special tokens are passed to the parser by linking them to neighboring real tokens using the field “specialToken” in the Token class.


JJTree automatically javacf a file called parser TreeConstants. It indicates that child nodes can now be added to it.

Each option binding specifies the setting of one option. When this method is called, the input stream is parsed to match this non-terminal.

The default for this is false, generating a simple mode parse tree. Non-terminals may not be used in an expansion in a manner that introduces left-recursion. Unlike yacc, however, JavaCC generates top-down parsers. We recommend the following step-by-step process to learning JavaCC: For convenience, an array of String s called jjtNodeName[] that maps the constants to the unmodified names of documentatlon is maintained in the same file.

JavaCC does not do any processing of these declarations and code, except to skip to the documenyation ending brace, collecting all text encountered on the way.

A conditional node javacc constructed with all of the children that were pushed on the stack within its node scope if and only if its dlcumentation evaluates to true. All AST nodes must implement this interface. User actions other than the final one can only access the children on the stack. Typically, this option is set to false when you wish to generate only the token manager and use it without the associated parser.

The only reason to set this option to false is to improve performance. Typically, in this situation, you can determine the problem by looking at the last few lines of this trace.

This option setting controls lookahead ambiguity checking performed by JavaCC.