Как стать автором
Обновить
34
0
Александр Кривощёков @SuperPaintman

Lead Software Engineer / Backend / Go / C++

Отправить сообщение

regenerator преобразует генераторы в стейт-машину которая будет работать и на старых версиях V8, которые не поддерживают их.


А async/await может спокойно без него работать, если упомянутые выше генераторы поддерживаются движком (благо они уже более распространены)

Будет, в черновике уже лежит заготовка для части "1", но сейчас у меня нет времени дописать ее (завал на работе).

source code -(Lexer)-> tokens -(Parser)-> AST -(Compiler)-> js code

Так и есть, будет написано 3 модуля: Lexer, Parser и Compiler.

Не совсем корректный пример со строкой, куда интереснее как мне кажется строки со вставками кода:


str = "this is a #{true ? "string" : "number"} !"

Т.е. тут " в начале строки не заканчивается на "string.

А как вы предлагаете без лексера и парсера написать язык? Не регулярками же

И это все?

Это краткая вводная часть, которая знакомит новичков с базовыми понятиями, которыми мы будем оперировать в данной серии.


Чем эта статья отличается от большого количества других парсерных "Hello world"?

Данная серия и не рассчитана на людей наизусть помнящих Dragon Book (хотя может и они чего подчерпнут), а скорее адресована новичкам чтобы они тоже вошли в курс дела.


Если быть точным, то парсер строит дерево разбора (parse tree), а не AST. AST — это дерево разбора, из которого удалены все не значимые токены

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


В данной серии, мы используем именно такой подход, что из токенов сразу строит AST, выбрасывая все лишнее.


Ну и правильно, что термин "лексема" обособлен в скобки, поскольку парсеру по сути важен только тип лексемы, а нее ее значение

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность