|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
||||||
Реализовать парсер xml кода, используя ассоциативный массив15.12.2016, 15:04. Показов 2184. Ответов 18
Метки нет (Все метки)
Нужно создать парсер.
Из потока берётся лексема и происходит поиск 'njq ktrctvs в ассоциативном массиве. Если лексема найдена(терминальный символ), тогда в очередь помещается код токена(нужно для дальнейшей проверки синтаксиса). Не получается реализовать. Помогите, пожалуйста.
0
|
||||||
| 15.12.2016, 15:04 | |
|
Ответы с готовыми решениями:
18
Требуется реализовать структуру данных «ассоциативный массив» используя бинарное дерево Парсер XML: реализовать функцию считывания из файла Создать шаблонный класс - ассоциативный массив, используя std::vector |
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||
| 15.12.2016, 15:25 | |||
|
Добавлено через 1 минуту Почему бы просто не проходиться по файлу через std::istream_iterator<char> ? Зачем нужен сишный FILE*? Добавлено через 21 секунду Какая-то каша у вас в коде. Топора не хватает.
0
|
|||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
||||
| 15.12.2016, 15:37 [ТС] | ||||
|
У меня стоит задача написать лексический анализатор без множественных IF-else и switch'ей. Но кодить совершенно не умею(хоть и основной принцип парсера понял, надеюсь).
0
|
||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 15.12.2016, 15:47 | ||||||
Можно в map хранить набор соответствий строка - обработчик.
1
|
||||||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|
| 15.12.2016, 15:59 [ТС] | |
|
Это так просто...
Спасибо большое) Учиться и учиться!
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 15.12.2016, 16:17 | ||||||
Не по теме: Меня, кстати, всегда вымораживало отсутствие возможности нормально создать константный контейнер с unique_ptr внутри.
2
|
||||||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
||
| 15.12.2016, 18:56 [ТС] | ||
|
А что мне делать, если всё-таки нужно посимвольно? Допустим, если в файле будет лежать "<class div" то выводится -1(отсутствие лексемы в списке, что логично) и 1(код лексемы). А мне нужно, чтобы символ "<" считался лексемой.
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 15.12.2016, 23:12 | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|||||||
| 16.12.2016, 15:58 [ТС] | |||||||
|
Только как это грамотно сделать, чтобы оно ещё и работало?
0
|
|||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 16.12.2016, 16:02 | ||
|
В рамках "абстрактной задачи". Вы бы хоть написали что конкретно хотите сделать, как обработать.
0
|
||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|
| 16.12.2016, 16:14 [ТС] | |
|
Написать свой парсер, распарсить xml код. Распарсить на токены(отдельно скобки, кавычки, слэши и отдельно терминальные символы). Токены поместить в очередь(для дальнейшего синтаксического анализа).
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 16.12.2016, 16:23 | ||
|
Почему нельзя взять библиотеку для работы с xml, например pugi?
0
|
||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|
| 16.12.2016, 16:28 [ТС] | |
|
Нужно именно посимвольно считывать поток, потом получать лексемы.
Без дополнительных библиотек
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 16.12.2016, 16:40 | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|||||||
| 16.12.2016, 19:06 [ТС] | |||||||
|
Пока что я только на стадии парсера.
*пишу в Visual Studio
0
|
|||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 16.12.2016, 19:10 | ||
|
С добавлением переменных-тегов в стек.
0
|
||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|||||||
| 16.12.2016, 19:45 [ТС] | |||||||
|
Добавлено через 26 минут В этой части кода у меня ошибка. Неправильно идёт считывание потока.
0
|
|||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 16.12.2016, 19:45 | ||||||
|
Примитивная функция проверки на валидность xml
0
|
||||||
|
0 / 0 / 1
Регистрация: 30.07.2012
Сообщений: 59
|
|
| 19.12.2016, 18:33 [ТС] | |
|
Скажите, пожалуйста, а Вы знакомы с конечными автоматами(если я не ошибаюсь)?
Мне нужно составить таблицу переходов. для каждой лексемы. Как я это понимаю: 1) Считываю символ из файла 2) Ищу этот символ в первом столбце двумерного массива. 3) Если нахожу этот символ, то перехожу по ссылке, содержащейся во втором столбце. Ссылка на следующий ожидаемый символ(а если может быть несколько вариантов?). 4) Возвращаемся к П.2 5) При разборе последнего символа лексемы, вместо ссылки на след. символ возвращаем код лексемы(токен). Стоит двигаться в этом направлении? Просто примеров реализации конечного автомата без Switch на C++ не нашёл(либо не понял реализации).
0
|
|
| 19.12.2016, 18:33 | |
|
Помогаю со студенческими работами здесь
19
Как лучше реализовать парсер HTML/XML, CSS, JavaScript? Запись XML-дерева сразу в xml-файл (парсер JAXP) Реализовать динамический массив структур, используя malloc
Реализовать класс календаря, используя для хранения дат массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|