Попробуй Ragel. Основные его свойства:
1) Похоже на lex, только намного круче
2) Генерирует конечные автоматы с возможностью их визуализации
3) Очень компактный C-код на выходе
4) До yacc не дотягивает, но для задач вроде Z80 ассемблера это не нужно.
Я даже уже начал делать "аналог" M80 на Ragel, но не доделал. Лежит у меня этот проект. Одно могу точно сказать: Ragel - подходящий инструмент для этой задачи.

