访问Sweet.js中的父变量

时间:2014-08-19 18:11:57

标签: javascript 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 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但我认为最简单的方法是使用名为patterns

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

module x {
    fn name { 

    }
}