我正在用 C++ 编写一个项目,我正在寻找一种方法以人类可读/可写的形式放入一个文本文件 ( usergrammar.txt ),这是一种定义对象的用户定义语法。
完成此操作后,我希望能够在代码中实例化其中一些对象,并将创建的实例保存在另一个文件 (instances.txt) 中,始终以人类可访问的格式。这第二个文件显然依赖于第一个被正确读取。
我遇到的问题是如何定义语法并解析它们。我一直在研究 Boost::Spirit,但是虽然它在读取第一个文件时会做得很好(因为它的规则是预定义的),但我认为它不适用于第二个文件,因为 Spirit 语法只是定义的一个编译时间,不能在运行时加载(至少我是这么理解的)。
现在我正在阅读 ENBF 表单,但我也有一个问题,即我不仅有语言规则,而且每个对象每次包含在另一个对象中时都有一个特定且不同的名称/描述/选项(例如,如果我有对象颜色,则其中的整数将称为红色、蓝色、黄色,而如果对象是标尺,则其整数将称为 length ),所以我也有办法将这些信息包含到文件中,并让它们与相应的值正确关联。
对于这样的项目,你有什么建议吗?提前致谢。