gpt4 book ai didi

yacc - 多个 flex/bison 解析器

转载 作者:行者123 更新时间:2023-12-02 03:26:09 25 4
gpt4 key购买 nike

在项目中处理多个 Flex/Bison 解析器的最佳方法是什么?

我编写了一个解析器,现在我需要在同一项目中使用第二个解析器。到目前为止parser1.y第三节我插入了 main(..)方法并调用 yyparse从那里开始。

我想要获得的是拥有两个不同的解析器( parser1.yparser2.y ),并能够从外部函数使用它们(假设 mainmain.cpp 中)。

导出时我应该采取哪些预防措施yyparse外部功能 .y文件以及我应该如何处理两个解析器?

PS。我使用 g++ 进行编译,但不使用 C++ 版本的 Flex 和 Bison,并且我希望保持这种方式(因此避免将解析器封装在对象内)。

最佳答案

除了莱夫勒的回答之外,我想在这里提供另一种方法:

.lex 文件中,您可以使用 %option prefix="PREFIX",在 .y 文件中,您可以使用 %define api.prefix PREFIX,其作用与将 -p PREFIX 传递给 Bison 和将 -P PREFIX 传递给 Flex 相同。

请注意,覆盖默认前缀 yy 后,您可以通过原始 yy* 和覆盖的 PREFIX* 访问内部名称,而显然对于外部名称,您必须使用 PREFIX* 来访问它们。

关于yacc - 多个 flex/bison 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com