|
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 147
|
|
LL(1) разбор для любого языка06.11.2015, 13:11. Показов 2273. Ответов 2
Метки нет (Все метки)
Доброго времени суток!
Подскажите, пожалуйста, нет ли каких-нибудь готовых примеров по этой теме для любого языка? По сути, нужно для SQL, но хотелось бы увидеть хотя бы примерчик любой. Методом рекурсивного спуска удалось почти безпроблемно построить лексический анализатор (с использованием LEX, конечно), а тут всё как-то тяжело. Всё встречается, в основном, на С и без использования LEX вообще
0
|
|
| 06.11.2015, 13:11 | |
|
Ответы с готовыми решениями:
2
Компилятор для языка Pascal (LL-разбор)
DLL как универсальный "язык" для любого языка программирования |
| 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) который поддерживает шаблоны (все три из них поддерживают), напишите шаблон для делфи и будет вам парсер ![]() Подробнее обо всем можете опять же пролистать книгу дракона (Ахо, Лам, Сети, Ульман), там все есть. Ну, кроме разве что packrat и peg, потому что их придумали уже в 2008ом, если не ошибаюсь
1
|
||
|
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 147
|
|
| 06.11.2015, 21:22 [ТС] | |
|
NEbO, спасибо большое за оперативность и полезный ответ! Очень благодарен! Весьма полезная информация!
0
|
|
| 06.11.2015, 21:22 | |
|
Помогаю со студенческими работами здесь
3
Почему при установке MS Office с любого носителя и любого года производства мне выдаёт ошибку?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|