Как стать автором
Обновить

Комментарии 11

спасибо.
А формально это называется нисходящий рекурсивный анализ.
когда же у же кто-нибудь напишет «компиляцию выражения» на хаскеле?
НЛО прилетело и опубликовало эту надпись здесь
зависит от того, что считать разбором. выделение слов и знаков препинания — легко :)

но вот если синтаксис и граматику еще при очень большом желании можно формализовать, то семантика сложновата будет — объектов много, сочетаний еще больше, а обработка данных в мозгу вообще не совсем понятна :)
потомучто надобы оговориться в статье, что разбор выражений рекурсией подходит далеко не для всех грамматик.

а только для контекстно свободных LL(k) грамматик,
одной из которых является приведённая грамматика выражений.

А вам шашечки, или ехать надо? :)

Человеку, который хочеть понять основы написания парсеров надо дато что-то пощупать. А потом уже читать, что такое LL(k) грамматики. И вовсе не на Хабре — есть же более академические источники.
лично мне — просветления :)

а тем, кому надо тупо ехать, мне кажется, уже давно просто заказали такси гуглом :)
ну тут кому совсем «тупо ехать», просто возьмут готовую библиотеку и не будут заморачиваться с пониманием «как оно там внутри» :)

вообще, в плане объяснений, я предпочитаю рассказывать «на пальцах» и без определений — формализированного текста и так горы написано, зачем его копировать, а вот примеры его применения с объяснениями иногда приходится искать…

оффтопик: а если смотреть на студентов — часто преподавание и контроль в лучших традициях формализма порождает (кроме, конечно, позитивных сторон) некое множество псевдо-отличников, которые знают все определения и могут их правильно компоновать. да вот только объяснить их природу не в силе…
ну, при таком подходе имеет смысл не просто показать но и объяснить суть алгоритма.
чуть более подробно, чем «простенький рекурсивный разбор».

вот я далеко не студент, а глядя на пример алгоритма — совершенно не понимаю как его реализовать в функциональном программировании.
(собственно, потому и коммент про хаскель :)
признаю, описывать текстом мне еще учиться и учится :( в живом общении как-то лучше получается, вопрос-ответ, объяснение на другом примере :)

по поводу функционального языка, к сожалению, не подскажу — сталкиваться дальше «научно-популярных» заметок не приходилось.
Не могли бы вы поделиться ссылками / названиями таких академических источников?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории