meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
include [2023/03/03 16:16] – revusky | include [2023/03/03 16:20] (current) – revusky | ||
---|---|---|---|
Line 43: | Line 43: | ||
} | } | ||
- | JavaCC | + | CongoCC |
INJECT JSONParser : | INJECT JSONParser : | ||
Line 50: | Line 50: | ||
} | } | ||
- | because the parser class we are generating is not JSONParser, it is FOOParser! However, the person writing a a generally useful JSON grammar that can be embedded in other grammars does not know the classname of Parser (or Lexer) that is being generated. So, he needs to use the alias **PARSER_CLASS** or possibly **LEXER_CLASS** for the injected code to be included. | + | because the parser class we are generating is not JSONParser, it is FooParser! However, the person writing a a generally useful JSON grammar that can be embedded in other grammars does not know the classname of Parser (or Lexer) that is being generated. So, he needs to use the alias **PARSER_CLASS** or possibly **LEXER_CLASS** for the injected code to be included. |
- | + | ||
- | So, do not be surprised when the code within PARSER_BEGIN...PARSER_END is ignored if it is within an INCLUDEd grammar. You need to write INJECT(PARSER_CLASS) to achieve the desired result. | + | |
In fact, the aliases **PARSER_CLASS**, | In fact, the aliases **PARSER_CLASS**, | ||
- | To see a concrete example of **INCLUDE** in use, you can take a look at https:// | + | To see a concrete example of **INCLUDE** in use, you can take a look at https:// |
</ | </ |