LINUX.ORG.RU

Lisp(Scheme) парсеры


0

3

Встречал ли кто-нибудь статью по написанию лексических и синтаксических анализаторов на Scheme. Интересуют не генераторы, а написание анализаторов «вручную». Очень интересная статья была "
Оптимизирующие парсер-комбинаторы" Практика функционального программирования. Но она посвящена OCaml. Мне интересные именно детали реализации на Scheme, т.е. получение данных из порта, откат и т.д. Какие-нибудь практики, шаблоны и т.д.

★★

ручное написание парсеров это не лиспвэй
лиспвэй это на макросах накатать генератор из PEG в packrat парсер и получать удовольствие

anonymous
()
Ответ на: комментарий от olegk

http://en.wikipedia.org/wiki/Parsing_expression_grammar
http://pdos.csail.mit.edu/~baford/packrat/

Пишешь макрос, разбирающий PEG-подобную грамматику в s-выражениях, и генерирующий код для packrat парсера(кстати, необязательно и packrat, он просто очень эффективен; PEG тривиально транслируется в обычные recursive-descent парсеры).

anonymous
()
Ответ на: комментарий от anonymous

ещё по PEG, правда, не на схеме, а на Си:
компилятор на PEG, где PEG используется во всех местах, от лексера до кодогенератора: http://piumarta.com/S3-2010/ — генерирует код на ASM x86, 75% без оптимизаций, 80%..96% с оптимизациями от gcc 4.2
PEG: http://piumarta.com/software/peg/ https://github.com/nddrylliog/greg

anonymous
()

статья про генерацию конечных автоматов на схеме http://www.cs.brown.edu/~sk/Publications/Papers/Published/sk-automata-macros/...

в том числе, можно использовать для парсинга. Про парсинг ещё было у Russ Cox: http://swtch.com/~rsc/regexp/  — оно в общем не имеет отношения к схеме, но про regexp derivatives было интересно написано.

anonymous
()
Ответ на: комментарий от anonymous

Класс! Спасибо за инфу, а то гуглилось совсем туго.

olegk ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.