Задать вопрос

В чем разница между 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.


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

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

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

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
19 дек. 2024, в 02:11
15000 руб./за проект
19 дек. 2024, в 02:09
11000 руб./за проект
19 дек. 2024, в 00:46
30000 руб./за проект