Я являюсь автором LRSTAR, генератора парсера LR (k) с открытым исходным кодом. Поскольку люди проявляют интерес к нему, я разместил продукт здесь онлайн LRSTAR .
Я много лет изучал скорость парсеров LALR и лексеров DFA. Работа Тома Пеннелло очень интересна, но это скорее академическое упражнение, чем реальное решение для компиляторов. Однако, если все, что вам нужно, это распознаватель образов, то это может быть идеальным решением для вас.
Проблема заключается в том, что реальным компиляторам обычно нужно делать больше, чем распознавание образов, например, поиск в таблице символов для входящих символов, восстановление после ошибок, предоставление списка ожидающих (информация о завершении оператора) и создание абстрактного синтаксическое дерево при разборе.
В 1989 году я сравнил скорость синтаксического анализа синтаксических анализаторов LRSTAR с "yacc" и обнаружил, что они в 2 раза превышают скорость синтаксических анализаторов "yacc". Парсеры LRSTAR используют идеи, опубликованные в статье: «Оптимизация таблиц парсеров для переносных компиляторов».
Что касается скорости лексера (лексического анализа), я обнаружил в 2009 году, что «re2c» генерирует самые быстрые лексеры, примерно в два раза быстрее, чем те, которые генерирует «flex». В то время я переписывал секцию генератора лексеров LRSTAR и нашел способ сделать лексеры почти такими же быстрыми, как «re2c», и намного меньше. Однако я предпочитаю лексеры, управляемые таблицами, которые генерирует LRSTAR, потому что они почти такие же быстрые, а код компилируется намного быстрее.
Кстати, внешние интерфейсы компилятора, сгенерированные LRSTAR, могут обрабатывать исходный код со скоростью 2400000 строк в секунду или быстрее. Сгенерированные LRSTAR лексеры могут обрабатывать 30 000 000 токенов в секунду. Тестируемый компьютер представлял собой машину с частотой 3,5 ГГц (с 2010 года).