如何使用我的 Bison 解析器“链接”或读取输入?

问题描述 投票:0回答:1

我知道解析器读取词法分析器生成的标记。我有一个使用 Flex++ 创建的工作词法分析器,它读取文本文件并将标记输出到标准输出。解析器方面,我目前有一个parse.y文件和一个运行后生成的parse.tab.c文件

野牛解析.y

这些是我目前拥有的唯一文件,我只是想知道是否需要另一个 .cc/.cpp 文件来允许我的解析器接收输入。我想我可以将词法分析器输出放入单独的 .txt 文件中,然后我的解析器可以将该 .txt 文件作为输入。我应该采取什么方法?

谢谢你。

parsing bison flex-lexer
1个回答
0
投票

Bison 解析器通过调用返回下一个输入标记的函数(默认情况下

yylex
)来获取输入。它将重复调用它以获取所有输入的令牌,直到返回 0 或 EOF 令牌。

Flex 生成一个名为

yylex
的词法分析器函数,它与 bison 的期望非常匹配。因此,您所要做的就是让您的词法分析器规则
return
标记(而不是将它们输出到标准输出)并将 bison 解析器和 Flex 词法分析器链接在一起,它们将一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.