Где я могу изучить основы написания лексера?


Я хочу научиться писать лексер. У моего университетского курса было задание, где мы должны были написать парсер (и лексер, чтобы идти вместе с ним), но это было дано нам без инструкции или обратной связи (за пределами отметки), поэтому я действительно не многому научился от него.

после поиска этой темы я могу найти только довольно продвинутые записи, которые фокусируются на областях, которые, как я чувствую, находятся на несколько шагов впереди того, где я нахожусь. Я хочу обсудить основы написания лексера для очень простой язык, который я могу использовать в качестве основы для исследования токенизации более сложных языков.

на данном этапе я не очень заинтересован в лучших практиках или методах оптимизации, но вместо этого предпочитаю сосредоточиться на главном. Какие есть хорошие ресурсы, чтобы заставить меня начать?

2 57

2 ответа:

в основном есть два основных подхода к написанию лексера:

  1. создание рукописного в этом случае я рекомендую в этом небольшом уроке.
  2. использование некоторых инструментов генератора лексера, таких как Лекс. В этом случае я рекомендую прочитать учебники для конкретного инструмента выбора.

также я хотел бы рекомендовать Калейдоскоп уроке С LLVM документация. Оно проходит через реализацию простого языка и в частности демонстрирует, как написать небольшой лексер. Существует C++ и объективная версия Caml учебника.

классический учебник по этому предмету компиляторы: принципы, методы и инструменты также известный как книга Дракона. Однако это, вероятно, подпадает под категорию "продвинутый ресурс".

The Книга Дракона вероятно, окончательное руководство по этому вопросу, хотя это может быть немного подавляющим. Шаблоны Реализации Языка и Прагматика Языка Программирования большие ресурсы также.