Как разобрать файл сложной строки с помощью 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
        }
    }

Сначала я думал, что читаю файл кусками. Один кусок был бы текстом между символами {и}, и я бы написал грамматику для такого блока. Чем с помощью цикла я бы прошел через куски. Но кажется, что это не очень хорошее решение.

Есть ли способ написать большую грамматику, которая может анализировать весь файл?

Что-то вроде:

если "объект", то... если "атрибут1", то... и т. д...

Кто-нибудь может дать мне пример кода, который делает что-то подобное, будет высоко ценится! Конечно, я рад любым советам / ссылкам, которые могут мне помочь.

Заранее спасибо!

1 ответ

Решение

Есть ли способ написать большую грамматику, которая может анализировать весь файл?

А - Да.

Посмотрите на следующие очень похожие грамматики:

Другие вопросы по тегам