Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > текстовый файл с ключами


Автор: Mormishka 22.5.2011, 09:47
Как лучше всего читать файлы  такого типа?
например
Key1 ( Key2 ( Key4 x1 )  Key3 ( x2 )  )
где Key1,Key2,Key3,Key4  ключи, строковые переменные
x1,x2 числа

Причем ключи могут быть разные, на разном уровне.

По идеи нужно создать класс, содержащий строковую переменную, название. В этом классе есть указатель на на другие такие же объекты.

Автор: Akina 22.5.2011, 20:02
Цитата(Mormishka @  22.5.2011,  10:47 Найти цитируемый пост)
Как лучше всего читать файлы  такого типа?

Читать как TextStream, а обрабатывать в стеке.

Автор: Mormishka 22.5.2011, 20:11
Akina, 
В каком смычле обрабатывать в стеке?

Key1 ( Key2 ( Key4 x1 )  Key3 ( x2 )  )
В начале я читаю файл, нахожу Key1 ищу "(", считываю строку Key2 ( Key4 x1 )  Key3 ( x2 ) . 
Создаю например лист строковых переменных, запихиваю строку "Key2 ( Key4 x1 )  Key3 ( x2 )".
Здесь нужна рекурсия , потому  что первоначально я не знаю сколько будет ключей, сколько подуровней, и сеолько чисел.

Автор: Silent 22.5.2011, 21:29
Я бы посоветовал запихнуть в xml, и работать с ним. А второй вариант - дерево синтаксического разбора

Автор: Akina 23.5.2011, 07:35
Цитата(Mormishka @  22.5.2011,  21:11 Найти цитируемый пост)
Key1 ( Key2 ( Key4 x1 )  Key3 ( x2 )  )

Покажите итог разбора ЭТОГО выражения и объясните, по какому принципу выполнено присвоение значений ключам.
Пока мне лично непонятно, как на 4 ключа могло оказаться всего 2 значения.

Автор: Mormishka 23.5.2011, 15:55
Akina, 

Любой ключ KeyX может содержать любое количество значений и любое количество ключей
KeyX (
         x1
         x2
         x3
         KeyX1 (...)
         KeyX2 (...)
         KeyX3 (...)
)
Для значений важен порядок.

Таким образом здесь Key1 содержит два ключа Key2, Key3.
 Key2 содержитодин ключ Key4, который содержит одно значение х1.
Key3 одно значение х2.
Key1 (
            Key2 (
                      Key4 x1 
                    )
           Key3 (
                    x2 
                   )  
        )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)