meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
include [2021/02/05 21:35] – revusky | include [2021/04/01 13:00] – revusky | ||
---|---|---|---|
Line 5: | Line 5: | ||
JavaCC 21's **INCLUDE** statement allows you to break up your grammar file into multiple physical files. It would look like this typically: | JavaCC 21's **INCLUDE** statement allows you to break up your grammar file into multiple physical files. It would look like this typically: | ||
- | INCLUDE(" | + | |
*This feature is not present in legacy JavaCC.* | *This feature is not present in legacy JavaCC.* | ||
Line 25: | Line 25: | ||
In that case, any grammar for a language that wants to handle embedded JSON data would presumably define its own " | In that case, any grammar for a language that wants to handle embedded JSON data would presumably define its own " | ||
- | Actually, | + | Actually, |
## Wrinkles with Code Injection | ## Wrinkles with Code Injection | ||
Line 33: | Line 33: | ||
You can still *inject* code into the generated parser or lexer class, from within an included grammar, but you need to write something like: | You can still *inject* code into the generated parser or lexer class, from within an included grammar, but you need to write something like: | ||
- | INJECT(PARSER_CLASS) : | + | INJECT PARSER_CLASS : |
{ | { | ||
... | ... | ||
Line 40: | Line 40: | ||
or: | or: | ||
- | INJECT(LEXER_CLASS) : | + | INJECT LEXER_CLASS : |
{ | { | ||
... | ... | ||
Line 47: | Line 47: | ||
JavaCC 21 will replace the **PARSER_CLASS** and **LEXER_CLASS** aliases with the appropriate names -- i.e. the actual class names of the XXXParser or XXXLexer being generated. So, if you have a Foo language in which you want to embed JSON expressions, | JavaCC 21 will replace the **PARSER_CLASS** and **LEXER_CLASS** aliases with the appropriate names -- i.e. the actual class names of the XXXParser or XXXLexer being generated. So, if you have a Foo language in which you want to embed JSON expressions, | ||
- | INJECT(JSONParser) : | + | INJECT JSONParser : |
{ | { | ||
... | ... | ||
Line 67: | Line 67: | ||
to only contain Java source code. Thus, writing: | to only contain Java source code. Thus, writing: | ||
- | | + | |
is exactly the same as if you wrote: | is exactly the same as if you wrote: |