我应该如何设计Lego Mindstorms风格的代码块编辑器?

时间:2013-02-08 19:42:21

标签: java design-patterns

我已经开始了一个项目,我需要设计一个可以作为代码块编辑器的应用程序,就像Lego Mindstorms和Blockly, a google project一样。

在Java中设计此类应用程序的可能方法是什么?

更具体地说,假设我有一个块A,我如何定义哪些块可以与它连接?我想到的是使用子类并检查层次结构,或者另一种可能的解决方案可能是某种2D表,它将验证连接是否有效(尽管我认为它可能会变得太大?)。

p.s:我希望这属于SO问题的范围。如果没有,请指出我正确的方向。

4 个答案:

答案 0 :(得分:0)

如果您不喜欢图形方法,并且由于我不确定Lego MindStorms如何工作,ANTLR可能有资格作为解决方案。

“ANTLR是一个功能强大的解析器生成器,用于读取,处理,执行或翻译结构化文本或二进制文件。它广泛用于构建语言,工具和框架。从语法上,ANTLR生成一个可以解析的解析器构建并遍历解析树。“

答案 1 :(得分:0)

Lego Mindstorms基本上是NI LabVIEW编程语言的精简版。

我认为你想要完成的项目将会非常复杂。这不是一件容易的事情,除非你的动作数量非常有限,你可以使用编辑器构建的代码能够执行。

基本上,您正在尝试在此开发一种全新的编程语言。在考虑实现GUI的细节之前,您需要确定您正在设计的语言的“语法”和其他语义。例如,你打算支持循环吗?而循环? case / switch语句?如果声明? goto的?抛出和捕捉异常?

我不确定您的要求和资源是什么,但您可能最好不要试图打电话给National Instruments,看看他们是否会为您建立类似MindStorms IDE的东西,或者看看是否有其他开源语言那里你可以修改以满足你的需求。

有一个打开的LabVIEW克隆,但它是德语页面:http://www.myopenlab.de/

以下是其他几个:http://en.wikipedia.org/wiki/Visual_programming_language

答案 2 :(得分:0)

我在C#项目中做了类似的事情。我使用了tree view control,并允许用户添加将在树视图中显示的操作,程序将通过树视图节点运行,调用其操作。在幕后,我使用了this pattern。如果您需要更多帮助,请发表评论。

答案 3 :(得分:0)

为什么不使用Blockly?毕竟,这就是它的目的。它位于Apache License gitub下。如果您不想使用Blockly,请告诉我们Blockly如何满足您的需求。 : - )