提振.Spirit在计算器示例中添加了#include功能
Boost.Spirit adding #include feature into calculator example
我正在将我基于Flex/Bison的类似计算器的语法迁移到基于Spirit的。我想添加一个特性#include<another_input.inp>
。我已经成功地定义了include_statement语法。我是否应该遵循错误处理的方式:on_success(include_statement, annotation_function(...))
,即每次成功匹配include_statement,获得新的输入文件名并再次调用phrase_parse()
?或者像Flex/Bison推送/弹出输入堆栈?
谢谢。
根据这里的少量信息猜测,您想问是否可以重用相同的grammar
实例,或者应该更好地实例化一个新实例来解析包含,这取决于。
你可以两者都做。
当语法是无状态时(提示:如果您可以使用它,则通常是const
),没有区别。否则,最好实例化一个单独的实例。
然而,- 这一点有点没有意义,因为似乎你已经决定在解析主文档后解析包含(如果我得到你的评论正确)
- 总是有全球状态的危险;即使
grammar
对象是const
,你也可以潜在地修改外部状态(例如使用phx::ref
从语义动作),所以,这将是一个问题,无论你是否使用单独的语法实例。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何将更多文件夹添加到c++include路径
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 添加 #include 的搜索路径
- 当我尝试在 tensorflow 中添加一个新操作时如何 #include "include/libxsmm.h"?
- 将基本 #include 命令添加到 VS Code
- 如何将 #include 添加到<iostream>项目中?
- 自动将"Additional include directory"添加到静态库的用户
- "Fatal error C1083: Cannot open include file"但我已将目录添加到项目中
- 向 MFC 项目添加 #include 时的警告 C4995 <vector>
- Qt .pro文件:添加包含"include"目录的路径不起作用
- 添加 #include < boost/asio.hpp>会导致"has different size"问题
- 添加许多 -isystem include 指令是否会显著减慢编译过程
- 从命令行调用CMake时,将include目录添加到CMake中
- 如何使用 Eclipse 在 JNI "include"文件夹中添加 openCV 文件
- 提振.Spirit在计算器示例中添加了#include功能
- 试图将include和lib添加到默认目录
- 阻止Apple clang在标准include路径中添加Xcode路径
- Visual studio 2013 -如何在已经包含#include的对象上添加一个对象?c++ / cli
- 为c++在Eclipse中添加Boost - include路径问题