我已经开始了一个项目,我需要设计一个可以用作代码块编辑器的应用程序,就像 Lego Mindstorms 和Blockly,一个 google 项目。
用 Java 设计这样的应用程序有哪些可能的方法?
更具体地说,假设我有一个块 A,我如何定义可以与它连接的其他块?我想到的是使用子类并检查层次结构,或者另一种可能的解决方案可能是某种二维表来验证连接是否有效(尽管我认为它可能会变得太大?)。
ps:我希望这在SO问题的范围内。如果没有,请指出我正确的方向。
我已经开始了一个项目,我需要设计一个可以用作代码块编辑器的应用程序,就像 Lego Mindstorms 和Blockly,一个 google 项目。
用 Java 设计这样的应用程序有哪些可能的方法?
更具体地说,假设我有一个块 A,我如何定义可以与它连接的其他块?我想到的是使用子类并检查层次结构,或者另一种可能的解决方案可能是某种二维表来验证连接是否有效(尽管我认为它可能会变得太大?)。
ps:我希望这在SO问题的范围内。如果没有,请指出我正确的方向。
如果您不喜欢图形方法,并且我不确定 Lego MindStorms 是如何工作的,那么ANTLR可能有资格作为解决方案。
“ANTLR 是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用于构建语言、工具和框架。ANTLR 从语法生成一个可以构建和遍历解析树的解析器。 "
Lego Mindstorms 基本上是 National Instruments LabVIEW 编程语言的精简修改版。
我认为您正在尝试完成的项目将非常复杂。除非您只有非常有限数量的操作,您可以使用您的编辑器构建的代码将能够执行这将不是一件容易的事。
本质上,您正在尝试在这里开发一种全新的编程语言。在考虑实现 GUI 的细节之前,您需要确定您正在设计的语言的“语法”和其他语义。例如,您要支持 for 循环吗?while 循环?案例/切换语句?如果语句?去吗?抛出和捕获异常?
我不确定您的要求和资源是什么,但您最好尝试致电 National Instruments,看看他们是否会为您/与您一起构建 MindStorms IDE 之类的东西,或者看看那里是否有其他开源语言您可以修改以满足您的需求。
有一个开放的 LabVIEW 克隆,但它是一个德语页面:http ://www.myopenlab.de/ 。
以下是其他几个:http ://en.wikipedia.org/wiki/Visual_programming_language 。
为什么不直接使用Blockly?毕竟,这就是它的目的。它在gitub上的Apache 许可证下可用。如果您不想使用 Blockly,请告诉我们 Blockly 不符合您的需求。:-)