我知道解析器读取词法分析器生成的标记。我有一个使用 Flex++ 创建的工作词法分析器,它读取文本文件并将标记输出到标准输出。解析器方面,我目前有一个parse.y文件和一个运行后生成的parse.tab.c文件
野牛解析.y
这些是我目前拥有的唯一文件,我只是想知道是否需要另一个 .cc/.cpp 文件来允许我的解析器接收输入。我想我可以将词法分析器输出放入单独的 .txt 文件中,然后我的解析器可以将该 .txt 文件作为输入。我应该采取什么方法?
谢谢你。
Bison 解析器通过调用返回下一个输入标记的函数(默认情况下
yylex
)来获取输入。它将重复调用它以获取所有输入的令牌,直到返回 0 或 EOF 令牌。
Flex 生成一个名为
yylex
的词法分析器函数,它与 bison 的期望非常匹配。因此,您所要做的就是让您的词法分析器规则 return
标记(而不是将它们输出到标准输出)并将 bison 解析器和 Flex 词法分析器链接在一起,它们将一起工作。