Child pages
  • Grammar options
Skip to end of metadata
Go to start of metadata

Taken from /org/antlr/tool/ all allowed options are




The target language for code generation. Default is Java. See Code Generation Targets for list of currently supported target languages.


Where ANTLR should get predefined tokens and token types. Tree grammars need it to get the token types from the parser that creates its trees. TODO: Default value? Example?


The type of output the generated parser should return. Valid values are AST and template. TODO: Briefly, what are the interpretations of these values? Default value?


Set the type of all tree labels and tree-valued expressions. Without this option, trees are of type Object. TODO: Cross-reference default impl (org.antlr.runtime.tree.CommonTree in Java)?


Set the type of all token-valued expressions. Without this option, tokens are of type org.antlr.runtime.Token in Java (IToken in C#).


Set the superclass of the generated recognizer. TODO: Default value (org.antlr.runtime.Parser in Java)?


In the lexer, this allows you to try a list of lexer rules in order. The first one that matches, wins. This is the token that nextToken() returns. If nothing matches, the lexer consumes a single character and tries the list of rules again. See Lexical filters for more.


Valid values are true and false. Default is false. Use this option when your translator output looks very much like the input. Your actions can modify the TokenRewriteStream to insert, delete, or replace ranges of tokens with another object. Used in conjunction with output=template, you can very easily build translators that tweak input files.


Limit the lookahead depth for the recognizer to at most k symbols. This prevents the decision from using acyclic LL* DFA.


Valid values are true and false. Default is false. Taken from : The new feature (a big one) is the backtrack=true option for grammar, rule, and block that lets you type in any old crap and ANTLR will backtrack if it can't figure out what you meant. No errors are reported by antlr during analysis. It implicitly adds a syn pred in front of every production, using them only if static grammar LL* analysis fails. Syn pred code is not generated if the pred is not used in a decision. This is essentially a rapid prototyping mode. It is what I have used on the java.g. Oh, it doesn't memoize partial parses (i.e. rule parsing results) during backtracking automatically now. You must also say memoize=true. Can make a HUGE difference to turn on.


Valid values are true and false. When backtracking, remember whether or not rule references succeed so that the same input position cannot be parsed more than once by the same rule. This effectively guarantees linear parsing when backtracking at the cost of more memory. TODO: Default value (false)?

  • No labels


  1. Unknown User (jluber)

    The options names show up at least on SeaMonkey (and probably other Gecko-based browsers) only up with their first two letters. Not that helpful. Is this a fault of the engine or of the dashboard?

    Another problem: Isn't the default token class not Token, but CommonToken? 

  2. Default type of labels in generated code is Token, though it creates CommonToken objects.

  3. Unknown User (

    The equivalent of the the Token interface in the Java runtime (that Ter is referring to above) is the IToken interface in the C# runtime.

  4. Unknown User (

    Is there a way of making the generated parser an abstract class?