Есть ли уроки по созданию простого интерпретатора с использованием Alex + Happy?
Я работаю над школьным проектом, где мне нужно создать переводчика для простого языка, используя Alex + Happy в Haskell.
Просматривая документацию, я понимаю большую ее часть, но хотел бы увидеть полный пример использования инструментов.
4 ответа
Не на построении интерпретаторов, а на построении лексеров и парсеров, да. Смотрите пример лексического анализатора в Alex здесь, в сочетании с введением к Happy здесь. Я нашел полезными файлы haskell.x и haskell.y, распространяемые в репозиториях darcs для Alex и Happy. Вы можете найти их здесь и здесь.
Я написал серию публикаций на bjbell.wordpress.com об использовании Alex+Happy+LLVM для написания компилятора для простого языка, похожего на Java.
Исходный код находится на GitHub по адресу https://github.com/bjwbell/NewL-Compiler (я не трогал его пару лет).
У Хэддока есть парсер Alex/Happy для документации, исходники которого находятся в файлах Lex.x и Parse.y.
Я написал пост о решении проблемы, которую вы описали: http://eax.me/simple-interpreter/ (на русском языке). Исходный код находится здесь: https://bitbucket.org/afiskon/hs-interpreter/