我正在为C语言制作一个词法分析器,这是一个功能较少的版本。
我想在不同的时间处理不同类型的正则表达式,例如,第一次从源程序输入字符流,然后第二次处理第一次处理后生成的程序的中间表示形式。
那么可以使用FLEX创建2个或更多yylex()
函数并在同一个C / C ++程序(词法分析器)中使用它吗?
答案 0 :(得分:3)
您可以使用%prefix声明将yy
(以及各种其他全局名称)中的yylex
更改为不同的内容,这样您就可以在同一个中使用多个扫描程序项目。您可能还希望使用-o
选项来设置生成的文件的名称;否则,构建过程变得丑陋。
但它们将是完全独立的扫描仪,每个扫描仪都有自己的输入流。那可能不是你想要的。
如果您想要一个可以将词法定义更改为另一组的扫描程序,则需要使用start conditions。这将允许您在不同的上下文中更改扫描仪行为,并且具有可以共享常见词法功能的优势。