Menu “想要”;菜单“;示例——Pico演示失败

Menu “想要”;菜单“;示例——Pico演示失败,menu,rascal,Menu,Rascal,在为我正在编写的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

在为我正在编写的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))
rascal>import-demo::lang::Pico::Plugin;
|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/demo/lang/Pico/Plugin.rsc|(1791,48,,):被调用的签名:action(str,void(…),
不匹配任何已声明(重载)的签名模式:
菜单=动作(str,void(Tree,loc))
菜单=动作(str,void(str,loc))
如果我注释掉“Plugin.rsc”的第71-73行,它会成功加载,但当然我没有“菜单”。有人能给我指出一个解决方案(不需要太多Eclipse或Java专业知识:)或一个不同的“菜单”工作示例吗

谢谢

我的环境:

流氓:(我不知道怎么打印这个版本,但是其中一个 文件是 rascal_eclipse_0.7.3.201506091957.jar)

Eclipse:适用于RCP和RAP开发人员版本:Mars发行版(4.5.0) Java:version“1.8.0_51”操作系统:Linux Mint 17 Qiana


弹出菜单可以添加为您的注册语言的贡献,使用
弹出窗口(菜单)
构造函数。创建所需的贡献后,调用提供构造的
贡献
数据类型的
registerContribution(..)
(在
util::IDE中定义)函数

例如,在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)
    ])
  )
};
evalpico程序
compileepioprogram
visualizePicoProgram
的签名为

public void _name_(Tree x, loc selection) {
  ...
}
最终,将使用以下代码注册捐款:

registerContributions("Pico", Pico_CONTRIBS);

在Pico示例中,注册的菜单包含类型错误的
操作
构造函数。这确实是流氓的一个错误。动作构造函数的签名在过去发生了变化,Pico插件模块没有相应地更新


我做了必要的修改,应该在Rascal最新的不稳定版本中修复。

也许你可以在这里复制Pico代码,只是为了完整性