|
Модераторы: Daevaorn |
|
dimon3306 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.12.2017 Репутация: нет Всего: нет |
Парсер, который принимает на вход текстовый файл, содержащий один корневой узел, и построить в памяти древовидное представление данных. Каждому узлу назначить целочисленный id. Затем слить данные в текстовый файл такой струтуры: (id узла, id вышестоящего узла, имя узла, значение в узле)
В случае наличия ошибок формата данных, выдавать сообщение вида "Неверный формат данных" и завершать работу. Пример иерархической структуры: shape = { type = "tetrahedron" vertices = { point = { x = "1" y = "0" z = "0" } point= { x = "0" y = "1" z = "0" } point ={ x = "0" y = "0" z = "1" } point = { x = "1" y = "1" z = "1" } } color = { r = "0xFF" g = "0x00" b = "0x80" alpha = "0x80" }a="25" } Пример выходного файла: (1, 0, shape, ) (2, 1, type, tetrahedron) (3, 1, vertices, ) (4, 3, point, ) (5, 4, x, 1) (6, 4, y, 0) (7, 4, z, 0) (8, 3, point, ) (9, 8, x, 0) (10, 8, y, 1) (11, 8, z, 0) (12, 3, point, ) (13, 12, x, 0) (14, 12, y, 0) (15, 12, z, 1) (16, 3, point, ) (17, 16, x, 1) (18, 16, y, 1) (19, 16, z, 1) (20, 1, color, ) (21, 20, r, 0xFF) (22, 20, g, 0x00) (23, 20, b, 0x80) (24, 20, alpha, 0x80) (25, 1, a, 25) |
|||
|
||||
Курсант |
|
|||
Опытный Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
А на какой стадии лично Вы находитесь. Т.е. формат Вашего сообщения напоминает объявление о работе. Если Вы просите помощи, то обозначьте проблему. Т.к. лично я никакой проблемы не вижу. Берешь и разбираешь. Например, вводите конечный автомат для обработки типа считываемой строки, по нахождению запятой, круглой или фигурной скобки - перекидываете состояние этого автомата, плюс заводите стек LIFO для запоминания индекса родительского объекта (опять же, открывающая фигурная скобка - добавляете в стек объект, закрывающая фигурная скобка - декрементируете указатель стека).
Если Вы хотите, чтобы кто-то написал Вам такой парсер - ну подождите тогда, может кто за репутацию напишет. Если за деньги - пишите на фриланс Задача несложная. День провозиться, если давненько не брал в руки похожие задачи... Это сообщение отредактировал(а) Курсант - 22.12.2017, 11:32 |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |