Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 147

LL(1) разбор для любого языка

06.11.2015, 13:11. Показов 2273. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Подскажите, пожалуйста, нет ли каких-нибудь готовых примеров по этой теме для любого языка? По сути, нужно для SQL, но хотелось бы увидеть хотя бы примерчик любой. Методом рекурсивного спуска удалось почти безпроблемно построить лексический анализатор (с использованием LEX, конечно), а тут всё как-то тяжело. Всё встречается, в основном, на С и без использования LEX вообще
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2015, 13:11
Ответы с готовыми решениями:

Компилятор для языка Pascal (LL-разбор)
Ищу компилятор для языка Pascal c LL-разбором. Есть у кого-нибудь?

Форматирование времени для любого языка
Всем привет! Пытаюсь отформатировать время посредством функции ТЕКСТ():=ТЕКСТ(ВРЕМЯ(15;0;0);"ч:мм") - так работает при...

DLL как универсальный "язык" для любого языка программирования
Здравствуйте! Не знаю в какой раздел вопрос задать. Подскажите, вот в библиотеку dll можно ведь запихать любой код, написанный на любом...

2
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
06.11.2015, 14:49
Лучший ответ Сообщение было отмечено Влад908 как решение

Решение

раз уж вы знакомы с lex, то могу еще один лайфхак предложить -- peg-парсеры. для дельфи тоже должны быть. по сути это как раз нисходящий.
а вообще, рекурсивный спуск -- это метод нисходящего разбора, частным случаем которого являются LL(k) парсеры. То есть если вы не путаете lex с yacc-ом или bison-ом, то скорее всего вы уже выполнили задание. (эти как раз таки LR-парсеры).
Хотя по-хорошему, lex используется немного для другого... для генерации лексических анализаторов. Но если ввести нормальный стек, состояние, и вручную это реализовать, то вполне реально разобрать им и КС-грамматику. От себя еще могу предложить ragel у него в последней бетке много всяких языков понадобавлялось (по-моему, порядка 15ти). возможно, там есть генератор и для делфи. ну а если и нет, то вполне можно прикрутить. И у него есть встроенные средства для реализации рекурсии, и всего такого. То есть нисходящий парсер написать можно на нем, в общем-то без особых проблем.
В общем же случае, как правило, LL парсеры пишутся вручную, на том языке, на котором вы хотите, возьмите книгу дракона, главу 4.4, там описаны алгоритмы, как их писать.
Если же вы перепутали LL с LR, и вам как раз таки надо восходящий построить, то смотрите в список https://en.wikipedia.org/wiki/... generators , выбирайте какой нибудь TP Yacc, или что-нибудь в этом роде, или же возьмите какой-нибудь нормальный (bison, lemon, kmyacc) который поддерживает шаблоны (все три из них поддерживают), напишите шаблон для делфи и будет вам парсер
Цитата Сообщение от Влад908 Посмотреть сообщение
на С и без использования LEX
неправда ваша. lex -- это лексический анализ, парсер -- синтаксический. в LL-парсерах обычно можно сделать все в один проход (но, если не брать в расчет алгоритм packrat, сложность будет у такого разбора как правило выше), в восходящих же это крайне затруднительно, поэтому разбивают на две стадии.
Подробнее обо всем можете опять же пролистать книгу дракона (Ахо, Лам, Сети, Ульман), там все есть. Ну, кроме разве что packrat и peg, потому что их придумали уже в 2008ом, если не ошибаюсь
1
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 147
06.11.2015, 21:22  [ТС]
NEbO, спасибо большое за оперативность и полезный ответ! Очень благодарен! Весьма полезная информация!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2015, 21:22
Помогаю со студенческими работами здесь

Побайтный разбор любого файла
Мне необходимо для шифрования сообразить разбор файла на байты и затем чтобы эти байты шифровались. Соответственно файлы не больше 50 - 100...

VB Замена любого знака препинания на знак двоеточие при введении любого текста
Здравствуйте! Можете пожалуйста помочь) Дано три текстовых поля. В одно я ввожу текст, в другое должно выводиться измененный текст, то есть...

Почему при установке MS Office с любого носителя и любого года производства мне выдаёт ошибку?
вчера мне установили новую винду 7 максимальная, всё работает нормально но при попытках установки программы Office мне всплывает окошко о...

Переменная для папки любого уровня вложенности для указанного каталога
Есть батник, копирующий файл в папки с указанным именем в определенном каталоге. Прописывается папка таким образом set...

Написать рекурсивную функцию для нахождения суммы для любого n
Написать рекурсивную функцию для нахождения суммы для любого n, вводимого с клавиатуры: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru