meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Last revisionBoth sides next revision | ||
new_settings_in_javacc_21 [2022/02/15 01:49] – chamberlain | new_settings_in_javacc_21 [2022/02/15 05:22] – chamberlain | ||
---|---|---|---|
Line 2: | Line 2: | ||
* **BASE_NAME** This option is used to set the name of the parser, lexer, constants, and NFA data files instead of using the default naming convention that prefixes these files with the name of the grammar file. If this option is set to an empty string (BASE_NAME=""; | * **BASE_NAME** This option is used to set the name of the parser, lexer, constants, and NFA data files instead of using the default naming convention that prefixes these files with the name of the grammar file. If this option is set to an empty string (BASE_NAME=""; | ||
+ | * **BASE_NODE_CLASS** When defined, this option allows you to specify the name of the base node from BaseNode to a name that you prefer, such as SimpleNode. This class implements the Node interface and is extended by the production classes generated by JavaCC. | ||
* **BASE_SRC_DIR** This supersedes the older OUTPUT_DIRECTORY setting. Files are generated // | * **BASE_SRC_DIR** This supersedes the older OUTPUT_DIRECTORY setting. Files are generated // | ||
* **CONSTANTS_CLASS** This option is used to set the name of the generated constants file instead of using the default file name based on the grammar filename. | * **CONSTANTS_CLASS** This option is used to set the name of the generated constants file instead of using the default file name based on the grammar filename. | ||
* **DEACTIVATE_TOKENS** This setting allows you to indicate that certain token types are de-activated by default when you instantiate the parser. Something like: '' | * **DEACTIVATE_TOKENS** This setting allows you to indicate that certain token types are de-activated by default when you instantiate the parser. Something like: '' | ||
+ | * **DEFAULT_LEXICAL_STATE** This option allows you to specify the default lexical state for a grammar instead of relying on the legacy value of DEFAULT. Setting a meaningful DEFAULT_LEXICAL_STATE is extremely desirable for grammars that may be INCLUDEd by other grammars because it will prevent accidental duplication of lexical productions. | ||
* **ENSURE_FINAL_EOL** With this setting turned on (it is off by default) the generated parser ensures that the input file ends with a newline character. (It tacks one on if it is not present.) This is a nitpicking detail but it is surprisingly difficult to write certain grammars (ones that are very line-oriented) if you cannot be sure that every line (including the last one!) ends with a newline. | * **ENSURE_FINAL_EOL** With this setting turned on (it is off by default) the generated parser ensures that the input file ends with a newline character. (It tacks one on if it is not present.) This is a nitpicking detail but it is surprisingly difficult to write certain grammars (ones that are very line-oriented) if you cannot be sure that every line (including the last one!) ends with a newline. | ||
* **EXTRA_TOKENS** This setting allows you to indicate some additional token types that are not defined with regular expressions in the lexical grammar. This can be useful particularly in token hook routines. | * **EXTRA_TOKENS** This setting allows you to indicate some additional token types that are not defined with regular expressions in the lexical grammar. This can be useful particularly in token hook routines. | ||
* **FAULT_TOLERANT** This turns on the experimental support for building a [[fault tolerant]] parser. It is off by default. | * **FAULT_TOLERANT** This turns on the experimental support for building a [[fault tolerant]] parser. It is off by default. | ||
+ | * **FREEMARKER_NODES** Defining this option inserts extra code into Node objects that implement FreeMarker (template) API's. This allows you to use FreeMarker templates to walk the node tree using a more natural syntax. | ||
* **LEXER_CLASS** This option sets the name of the generated lexer file instead of using the default file name based on the grammar filename. This option also sets the name of the NFA data file to use this same prefix. For example, LEXER_CLASS=" | * **LEXER_CLASS** This option sets the name of the generated lexer file instead of using the default file name based on the grammar filename. This option also sets the name of the NFA data file to use this same prefix. For example, LEXER_CLASS=" | ||
+ | * **MINIMAL_TOKEN** Default is not set (false) Token Chaining is supported by adding two fields to Tokens. If token chaining is _not_ required, define this option to skip adding these two additional fields. | ||
* **PARSER_CLASS** This option is used to set the name of the generated parser file instead of using the default file name based on the grammar filename. | * **PARSER_CLASS** This option is used to set the name of the generated parser file instead of using the default file name based on the grammar filename. | ||
* **PRESERVE_LINE_ENDINGS** This is now off by default. That means that all Windows/DOS style line endings (\r\n) are converted to UNIX/MacOS style (\n) internally when the file is read in. Note, by the way, that one advantage of this and the TABS_TO_SPACES option is that if you convert tabs to spaces and line endings to \n then your grammar' | * **PRESERVE_LINE_ENDINGS** This is now off by default. That means that all Windows/DOS style line endings (\r\n) are converted to UNIX/MacOS style (\n) internally when the file is read in. Note, by the way, that one advantage of this and the TABS_TO_SPACES option is that if you convert tabs to spaces and line endings to \n then your grammar' | ||
Line 15: | Line 19: | ||
* **TABS_TO_SPACES** This is an integer (typically from 1 to 8, in practice) that defines how many spaces a tab stop is. This is now set to 8 by default. (Until very recently, the default was that the option was off.) This means that all TAB characters (\t) are converted to spaces when the file is read in. Note that, if you turn this off, all reported error locations simply treat a tab character as one horizontal offset. If you want JavaCC to report errors as if a TAB stop is 4 spaces, say, you need to set TAB_SPACES=4 in your settings. | * **TABS_TO_SPACES** This is an integer (typically from 1 to 8, in practice) that defines how many spaces a tab stop is. This is now set to 8 by default. (Until very recently, the default was that the option was off.) This means that all TAB characters (\t) are converted to spaces when the file is read in. Note that, if you turn this off, all reported error locations simply treat a tab character as one horizontal offset. If you want JavaCC to report errors as if a TAB stop is 4 spaces, say, you need to set TAB_SPACES=4 in your settings. | ||
* **TOKENS_ARE_NODES** This sets whether we add Tokens as terminal nodes to the AST. By default, it is true. | * **TOKENS_ARE_NODES** This sets whether we add Tokens as terminal nodes to the AST. By default, it is true. | ||
+ | * **TREE_BUILDING_DEFAULT** Default is true. A parser generated by JavaCC 21 automatically includes the code to build an AST (Abstract Syntax Tree). When set to false, the code is still available in the generated code but the AST is not built until you turn it on in the code. | ||
+ | * **TREE_BUILDING_ENABLED** Default is true. A parser generated by JavaCC 21 automatically builds a tree. If you don't want a tree or want to build a tree in your own code actions, set TREE_BUILDING_ENABLED=false; | ||
+ | * **USE_PREPROCESSOR** When defined, JavaCC 21 will process preprocessor statements. The statements conform the behavior of Microsoft' | ||
See [[deprecated settings]] for a list of legacy JavaCC options that no longer exist in JavaCC 21. | See [[deprecated settings]] for a list of legacy JavaCC options that no longer exist in JavaCC 21. |