我正在创建一个新的面向对象系统,我需要访问宏的父变量。我有以下内容:
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
,它就无法正常工作。有可能吗?
答案 0 :(得分:1)
有几种方法可以做到这一点,但我认为最简单的方法是使用名为patterns:
macro module {
rule {
$i:ident {
$mbody:(fn $name:ident { $body ...}) ...
}
} => {
$i.prototype.$mbody$name ...
}
}
module x {
fn name {
}
}