В чем разница между tokenizing и lexing?

В книге "You Don't Know JS" описывается, что при парсинге кода происходит разбивание его на лексемы, но не совсем понятно в чем отличие tokenizing/lexing.

The difference between tokenizing and lexing is subtle and academic, but it centers on whether or not these tokens are identified in a stateless or stateful way. Put simply, if the tokenizer were to invoke stateful parsing rules to figure out whether a should be considered a distinct token or just part of another token, that would be lexing.


В этом примечании описано, что разница в том, идентифицируются ли эти лексемы как без состояния или с состоянием? Что значит состояние лексемы? Объясните пожалуйста, что имеется ввиду здесь, так как не совсем понятно данное описание.
  • Вопрос задан
  • 543 просмотра
Пригласить эксперта
Ответы на вопрос 1
DreamShaded
@DreamShaded
Front-end developer
Ваш вопрос по сути не JS, а информатика, теория компиляции)

Принципиальная разница - сначала токенайзер берёт полотно кода и дробит на токены по пробелам, отступам, скобкам и прочим частям, затем лексер ещё запоминает, что этот токен - оператор сравнения, а этот токен - Number, этот - строка. А дальше парсер создаёт абстрактное дерево, код выполняется и мы счастливы) Возможно, в движках JS это один процесс, но, обычно это всё же разные этапы прочтения кода компиляторами.

P.S: https://en.wikipedia.org/wiki/Compilers:_Principle... - эта книга поможет разобраться со многими базовыми вопросами информатики.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
21 мая 2024, в 21:13
100000 руб./за проект
21 мая 2024, в 21:01
29999 руб./за проект
21 мая 2024, в 21:00
2000 руб./за проект