在为我正在编写的DSL寻找一个“菜单”的工作示例时,我尝试了"Pico“。但以下几项都失败了:
rascal>import demo::lang::Pico::Plugin;
|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/demo/lang/Pico/Plugin.rsc|(1791,48,<71,6>,<71,54>): The called signature: action(str, void (...)),
does not match any of the declared (overloaded) signature patterns:
Menu = action(str,void (Tree, loc))
Menu = action(str,void (str, loc))如果我注释掉"Plugin.rsc“的第71-73行,它会成功地加载,但是当然,我没有”菜单“。有人能告诉我这个问题的解决方案(它不需要多少Eclipse或Java专业知识:),或者一个不同的“菜单”工作示例?
谢谢
我的环境:
Rascal:(我不知道如何打印版本,但其中一个文件是rascal_eclipse_0.7.3.201506091957.jar ) Eclipse:对于RCP和RAP开发人员,版本: Mars发行版(4.5.0) Java:版本"1.8.0_51“OS: LinuxMint17qiana
发布于 2015-10-20 07:17:11
弹出菜单可以使用popup(Menu menu)构造函数作为对注册语言的贡献添加。在创建了需要调用的贡献之后,registerContribution(..) (在util::IDE中定义)函数提供了构造的Contribution数据类型。
例如,在Pico中,贡献定义如下:
public set[Contribution] Pico_CONTRIBS = {
popup(
menu("Pico",[
action("Evaluate Pico program", evalPicoProgram),
action("Compile Pico to ASM", compilePicoProgram),
action("Show Control flow graph", visualizePicoProgram)
])
)
};evalPicoProgram、compilePicoProgram和visualizePicoProgram的签名如下
public void _name_(Tree x, loc selection) {
...
}最终,这些贡献将使用以下代码注册:
registerContributions("Pico", Pico_CONTRIBS);在Pico示例中,已注册的菜单包含错误类型的action构造函数。这确实是在Rascal中的一个错误。动作构造函数的签名在过去发生了变化,Pico插件模块也没有相应更新。
我做了必要的改变,它应该在最新的不稳定版本的Rascal中修复。
https://stackoverflow.com/questions/33228131
复制相似问题