Парсер на C++
1000 UAHЕсть текстовый формат для хранения произвольных данных, имеющих иерархическую структуру.
Синтаксис такой:
имя_узла = строка_в_кавычках | список
Где,
имя_узла – строка из букв, цифр, и символа '_', начинающаяся не с цифры
строка_в_кавычках – произвольная строка в двойных кавычках, не содержащая символов перевода строки и двойных кавычек
список = {узел [узел ... ] }
Необходимо написать парсер, который принимает на вход файл, содержащий один корневой узел,
и построить в памяти древовидное представление данных.
Каждому узлу назначить целочисленный id. Затем слить данные в текстовый
файл (или в таблицу БД) такой струтуры: (id узла, id вышестоящего узла, имя узла, значение в узле)
Если будет выбран вариант с БД, то структура таблицы может быть такая:
create table tree_table (
node_id number not null primary key,
parent_id number references tree_table( node_id ),
node_name varchar2(100),
node_value varchar2(1000)
);
В случае наличия ошибок формата данных, выдавать сообщение вида "Неверный формат данных" и завершать работу.
Пример иерархической структуры:
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)
Отзыв заказчика о сотрудничестве с Виктором Л.
Парсер на C++Отличный специалист, есть чему у него поучиться.
![]()
Актуальные фриланс-проекты в категории C и C++
Инженер по инфраструктуре резидентных проксиМы строим сеть резидентных прокси с нуля — полностью собственную, без сторонних поставщиков. Нам нужен один исключительный сетевой инженер для создания всей технической базы. Что вы будете строить: - Android SDK для фонового использования, который направляет прокси-трафик через… C и C++, DevOps ∙ 2 дня 15 часов назад ∙ 12 ставок |
Добробка в существующей версии 1с розница блока для РЦ(распределительного центра)В общем поясню, что у нас за база - есть общий сервер, где есть база Розница (где ставятся все приходы) - база УТП, куда переливаются все продажи - считается наценка, остатки по складам - маленькие базы розничных магазинов. По обменам у нас магазины обмениваются с базой Розница… C и C++, C# ∙ 3 дня 6 часов назад ∙ 6 ставок |
ПО Мастер-программа «KONSTRUCTOR»
185 977 UAH
Мы ищем очень опытного C++ разработчика для модернизации существующего ПО (мастер-программы). Программа отвечает за создание производного ПО представляющего аудио-визуальные сеансы психологической коррекции. Текущая версия написана на чистом WinAPI (Visual Studio 2019/2022).… C и C++, Десктопные приложения ∙ 8 дней 9 часов назад ∙ 19 ставок |
Написание кода для ArduinoНеобходимо разработать программное обеспечение для весового дозатора на базе Arduino Uno. Комплектующие: Arduino Uno R3 HX711 + тензодатчик LCD1602 I2C дисплей MAX7219 светодиодная матрица 8x32 5 кнопок управления 4-канальное реле 2 сигнальные лампы Вибромагнит грубого… C и C++, Встраиваемые системы и микроконтроллеры ∙ 9 дней 18 часов назад ∙ 15 ставок |
Нужно доработать проект или предоставить консультацию.
1000 UAH
|