首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >想要“菜单”示例--Pico演示失败

想要“菜单”示例--Pico演示失败
EN

Stack Overflow用户
提问于 2015-10-20 04:39:45
回答 1查看 77关注 0票数 2

在为我正在编写的DSL寻找一个“菜单”的工作示例时,我尝试了"Pico“。但以下几项都失败了:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 07:17:11

弹出菜单可以使用popup(Menu menu)构造函数作为对注册语言的贡献添加。在创建了需要调用的贡献之后,registerContribution(..) (在util::IDE中定义)函数提供了构造的Contribution数据类型。

例如,在Pico中,贡献定义如下:

代码语言:javascript
复制
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)
    ])
  )
};

evalPicoProgramcompilePicoProgramvisualizePicoProgram的签名如下

代码语言:javascript
复制
public void _name_(Tree x, loc selection) {
  ...
}

最终,这些贡献将使用以下代码注册:

代码语言:javascript
复制
registerContributions("Pico", Pico_CONTRIBS);

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33228131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档