gpt4 book ai didi

c++ - 解析时动态切换解析器

转载 作者:行者123 更新时间:2023-11-28 01:26:31 24 4
gpt4 key购买 nike

我正在解析 spice netlists ,为此我已经有了一个解析器。由于我实际上使用幽灵(节奏,集成电子),我想支持两种模拟器语言(不幸的是它们不同)。我可以使用一个开关(例如命令行)并从一开始就使用正确的解析器。但是,spectre 允许使用 simulator lang=spectre 语句,我也希望支持这些语句(当然反之亦然)。这如何用 boost::spirit 完成?

我的语法大概是这样的:

line = component_parser             | 
command_parser |
comment_parser |
subcircuit_parser |
subcircuit_instance_parser;

main = -line % qi::eol >> qi::eoi;

这个顶层结构对两种语言都适用,所以我需要更改子解析器。我的第一个想法是让顶层解析器将实例(或对象)保存到相应的解析器,然后切换到查找 simulator lang 语句(带有语义操作)。这是一个好方法吗?如果不是,还可以怎么做?

最佳答案

您可以使用 qi::lazy (https://www.boost.org/doc/libs/1_68_0/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html)。

有一个与此相关的惯用模式,称为 The Nabialek Trick .

我在这个网站上有几个答案展示了这些不同的技术。

关于c++ - 解析时动态切换解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524161/

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