Переменная доступа к родителям в Sweet.js

Я создаю новую систему ориентации объектов, и мне нужно получить доступ к переменным родителя макроса. У меня есть следующее:

macro module {
    rule { $i:ident { $e ... } } => {
        var $i = {
            $e ...
        }
    }
}

macro fn {
    rule { $i:ident { $e ... } } => {
        $e ...
    }
}

module x {
    fn name { 

    }
}

Я хочу быть в состоянии, в fn macro, есть в наличии module имя, в этом случае, xпотому что, может быть, я хочу сделать что-то вроде $parentModule.prototype.myFunc, Но если я сделаю $e$e это не работает должным образом. Является ли это возможным?

1 ответ

Решение

Есть несколько способов сделать это, но я думаю, что самое простое - использовать именованные шаблоны:

macro module {
    rule { 
        $i:ident {
            $mbody:(fn $name:ident { $body ...}) ...
        }
    } => {
        $i.prototype.$mbody$name ...
    }
}

module x {
    fn name { 

    }
}
Другие вопросы по тегам