Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Нормальный транслятор ECMA6 (https://javascript.ru/forum/offtopic/39614-normalnyjj-translyator-ecma6.html)

iKillMaxmaxmaximus 10.07.2013 14:54

А напишу ка я тоже эту херню ради прикола)) чисто на регулярках)

iKillMaxmaxmaximus 10.07.2013 17:24

Я вот думаю сделать просто регулярками, или построить синтаксическое дерево и кукарекать от него но строить я их не умею придется опять лвл апать собственным опытом) так что сделаю просто регулярками и реплейсами

kobezzza 10.07.2013 17:52

Судя по новым коммитам defs.js довольно скоро реализует хорошую поддержку ECMA6, уже добавлены тесты для: классов, деструктуризации и параметрам по умолчанию.

iKillMaxmaxmaximus 10.07.2013 18:20

Как я понял ECMA это только синтаксис и родные обьекты? А кто тогда отвечает за внедрение объектов окружения?
Всяких Object.observe или Object.proxy например, ведь их стандартными средствами не реализовать?

Или это не обьект окружения а родной считается, тогда .proxy и .observe должны быть прописаны в ECMA каком-то?

iKillMaxmaxmaximus 10.07.2013 19:00

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

expressions?


но там могут быть как выражения так и блоки же или итераторы всякие. по этому не православно называть так. так как быть?

может "конструкции"?

iKillMaxmaxmaximus 10.07.2013 19:28

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

iKillMaxmaxmaximus 10.07.2013 19:37




Это зашквар же


Ты там наверное используешь 20 мерные кубы из матриц таблиц, для ускорения выборки, не?
Я слышал так все нормальные масоны делают. Ибо памяти в наше время хоть жопой жри.

kobezzza 10.07.2013 19:52

Добавил поддержку именованных параметров функций, исправил кое-какие баги и т.д. Обновил на гитхабе и в npm.

function foo({name, body: lastName}) {
    name;
    lastName;
}


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

ЗЫ: запилил ридми на гитхабе

iKillMaxmaxmaximus 10.07.2013 21:53

А я короче пишу минишаблонизатор для конструкций, типа регулярок тока выше уровнем) конструкции состоят из токенов, и я могу указывать какие токены могут идти а какие нет)

например шаблон конструкции "функция" выглядит так

'function \( (word,?)* \) \{ .* \}'

то есть как регулярки тока за место слов там названия токенов, некоторые названия , например открывающая скобка, приходится экранировать, а чтобы не экранировать можно было назвать типа открСкобка и шаблон выгладил бы так:

'function открСкобка (word,?)* закрСкобка открФигурнСкобка .* закрФигурнСкобка'

Ну короче пишу чо то типа языка для описания конструкций) чтобы потом не ебаца и добавлять разные плюшки в интерпритатор) крута да)?

Ну или например описать конструкцию "блок" научить его отсчитывать одинаковое количество открывающих скобочек и закрывающий а в шаблоне функции писать просто 'function \( (word,?)* \) \{ блок \}'

Короче есть где разгуляться)

kobezzza, короче сяп за вдохновение)

Riim 11.07.2013 06:26

kobezzza, так ты ничего серьезного не сделаешь, погугли лучше по "esprima escodegen".

UPD: http://sssslide.com/speakerdeck.com/...t-ast-as-an-ir


Часовой пояс GMT +3, время: 23:45.