I’m using ANTLR generated c parser in my C++ program and I wish to use my helper class in parser to write something like the following:
constant_declaration
: 'const' type_specifier ID ('[' constant_expression ']')? '=' initializer
{
parserHelper->addConstant($type_specifier.text, $ID.text);
}
;
Where parserHelper is my C++ helper object. But I’m stuck with passing this helper to the C parser. In object oriented languages the simple way is to use base parser class. It is not possible in C. The only solution I came for now is to define global variable in @members section and initialize it before parsing:
@members
{
ParserHelper* parserHelper;
}
For some reasons this is inconvenient for me. Isn’t there a way to put this variable into C parser structure generated by ANTLR?
One possible solution is to use ANTLR named scopes instead of a global member section.
The following implementation should correspond to what you are looking for: