JavaScript Your Way — Макросы Sweet.js


Макросы имеют долгую историю в вычислениях, и sweet.js может просто дать вам JavaScript любым способом, которым вы захотите его запрограммировать.

Sweet.js — это проект Mozilla, который добавляет в JavaScript возможность макросов. Хотя это правда, что у Mozilla есть много проектов, которые никогда не оказывали большого влияния, об этом стоит знать, хотя бы для того, чтобы представить языки и проблемы, которые они создают, в перспективе.

Макроязык — это, по сути, язык обработки текста, и большая проблема в том, что они сильно различаются по мощности. Например, основная функция макросов C — это более или менее автоматизированное копирование и вставка. Простому макроязыку почти удалось подорвать репутацию макроязыков, но sweet.js немного сложнее.

Его называют «гигиеничным» макроязыком, потому что он не загрязняет язык, которым он манипулирует, ненужными ресурсами. Проще говоря, он не создает и не использует переменные на языке, с которым работает. Однако sweet.js — это не только гигиеничный язык, но и мощный язык шаблонов, который может преобразовывать макрокод в эквивалентный JavaScript. Вы можете думать об этом как о своего рода настраиваемом компиляторе, но это может быть преувеличением.

Например, если вы хотите написать def вместо обычного ключевого слова function, вы можете определить макрос:

макрос def {case $ name: identify $ params $ body => {function $ name $ params $ body}}

и после этого заявление вроде:

def sweet (а) {console.log («Макросы сладкие!»); }

превращается в

function sweet (a) {console.log («Макросы сладкие!»); }

Обратите внимание, что хотя этот пример выглядит как простая замена «function» на «def», макрос определяет, что происходит со всем, что следует за «def», потенциально сложными способами.

Использование макросов — это вопрос сопоставления с образцом, но когда макросы включают в себя условные выражения и рекурсию, такие как sweet.js, тогда все становится очень мощным, и в принципе вы можете написать компилятор, используя только макроязык.

Конечно, в этом случае цель sweet.js — позволить вам расширить JavaScript способами, которые соответствуют вашему конкретному стилю программирования. Если вам больше нравится JavaScript с циклом for в базовом стиле, вы можете написать макрос для преобразования

Для i = от 1 до 10

в

для (var i = 1; i <= 10; i ++) Вы также можете использовать sweet.js для реализации доменных языков, DSL. Sweet.js написан на JavaScript и может работать как пакет Node.js. Он действует как компилятор, который принимает файл макроса, состоящий из определений макросов и кода, и выводит чистый JavaScript. Можно сказать, что это был другой компилятор, который рассматривает JavaScript как свой язык ассемблера, но в этом случае вывод должен быть легким для понимания человеком из-за тесной и значимой связи между макросом и выводом. Проект длится около месяца, и sweet.js вполне пригоден для использования с некоторыми упущениями и ошибками. Вы также можете использовать его с Ruby. Код имеет открытый исходный код, и вы можете скачать его с Github.


Добавить комментарий