有没有一种把值传递给词法分析器的机制?(我正在使用ANTLR 3中的C目标)
其他一些搜索结果建议将函数和var放入成员区域:
@members
{
bool read_flag;
void set_flag(bool b) {read_flag = b;}
}然而,这似乎并不管用。set_flag()是词法分析器的全局函数,但不能从外部调用
我希望能够在调用代码中这样做:
//some input stream
pANTLR3_INPUT_STREAM input =
antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8)buf, len, NULL);
pmyLexer lxr = myLexerNew(input);
lxr->set_flag(true);发布于 2014-11-27 16:01:20
您可以使用用户指针,它是专门为此目的而添加的:
lexer->pLexer->rec->state->userp = &context;在我的词法分析器中,我使用它来存储对RecognitionContext结构的引用,然后通过语法中的宏来访问它:
#define PAYLOAD ((RecognitionContext*)RECOGNIZER->state->userp)->payload
#define SERVER_VERSION ((RecognitionContext*)RECOGNIZER->state->userp)->version结构定义如下:
typedef struct {
long version;
void *payload;
...
} RecognitionContext;https://stackoverflow.com/questions/27144194
复制相似问题