Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

По сути, существует два основных подхода к написанию лексера:

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

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

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