我已成功生成sintax.tab.hh
和sitax.tab.cc
bison并包含在lex.l
中,以使用以下命令生成lex.yy.cc
:
bison -d sintax.yy
flex lexer.l
我在syntax.yy
和lexer.l
中有一个简单解析器的3个相应文件。我不会在最后部分放置任何C ++代码;这是对的吗?
我想在我正在处理的另一个项目中使用这些文件,因此我不知道如何执行此操作。
在我自己的另一个类中声明的方法中,我该怎么做:
答案 0 :(得分:0)
这实际上只是一个lex(flex)问题,因为词法分析器处理输入。
使用flex,您可以使用以下功能:
yyrestart(FILE * input_file)
yy_scan_string(const char * string)
yy_scan_buffer(const char * buffer, size_t size)
将输入切换到stdin以外的某个源(在调用yyparse
之前调用这些来源)。还有一堆"缓冲区"您可以使用这些函数动态创建多个缓冲区,并在解析过程中在它们之间切换(对于处理' include'指令等内容非常有用)。