在Java中读取和执行简单的预定义编程语言

时间:2012-05-09 10:05:48

标签: java

我们必须阅读并执行用编程语言编写的外部文件。以下是该语言的示例:

[while
   [x-is-larger-than 300]
   [seq
      [command1]
      [command2]
   ]
]

我们考虑为每个命令或条件使用不同的类。

我们的问题是:我们如何按顺序阅读和执行这些命令?

谢谢!

2 个答案:

答案 0 :(得分:2)

我强烈建议你

  1. 为发明的语言编写语法
  2. 使用解析器生成器为语言生成解析器
  3. 然后

    1. 使用解析器解析给定的程序。
    2. 直接遍历AST执行程序,
      或者,
      将AST编译为顺序程序,该程序易于逐句解释。

答案 1 :(得分:2)

将所有命令放在堆栈/列表中

所以你会:

6: ]
5: ]
4: [command2]
3: [command1]
2: [seq
1: [x-is-larger-than 300]
0: [while

因此,如果您阅读“While”....保存其堆栈位置并通过它...

  1. 0 - >
  2. 开始
  3. 1 - > x大于300?
  4. 2 - > if 2. sequence start else clear stack
  5. 3 - >运行命令直到达到
  6. 4 - >从保存的堆栈位置开始(0) - >从1开始。
  7. 多数民众赞同我会做什么。 将命令转换为代码(解析)将是你的! ;)