如何使用Boost :: Spirit解析复杂的字符串文件

时间:2013-05-09 10:26:42

标签: c++ parsing boost-spirit

我想用Boost :: Spirit解析一个文件,我想把解析后的数据传递给我的班级。我之前从未使用过Boost :: Spirit,因此我无法确定解决此问题的最佳方法。

我的文件结构如下所示:

Object {
    Attribute1(2) {
        1,2,3
        4,5,6
    }

    Attribute2(3) {
        1,2,3
        3,4,5
        6,7,8
    }

    Attribute3(1) {
        1,2
    }

    ComplexAttribute1 {
        Inner_Attribute1: 1
        Inner_Attribute2: 2
        Inner_Atribute3(2) {
             1,2,3, 4,5,6, 7,8,9
             9,8,7, 6,5,4, 3,2,1
        }
    }

    ComplexAttribute2 {
        Inner_Attribute1: 1
        Inner_Attribute2: 2
        Inner_Atribute3(2) {
             1,2,3, 4,5,6, 7,8,9
             9,8,7, 6,5,4, 3,2,1
        }
    }

首先,我想我是按块读取文件的。一个块将是{和}字符之间的文本,我会为这样的块写一个语法。比起一个while循环我会经历这些块。但感觉这不是一个好的解决方案。

有没有办法编写一个可以解析整个文件的语法?

类似的东西:

如果“对象”那么...... 如果“Attribute1”那么...... 等...

任何人都可以给我一些示例代码,做类似的事情会非常感激!当然,我很满意任何可以帮助我的建议/链接。

提前致谢!

1 个答案:

答案 0 :(得分:2)

  

有没有办法编写一个可以解析整个文件的语法?

A - 是的。

对于非常相似的语法,请查看以下内容: