我试图弄清楚从哪里开始这个项目。也许有人可以引导我朝着正确的方向前进。
我得到了一种小语言,我必须为其编写解释器。该语言由括号中的表达式组成:
(integer integer operator)
或由以下形式的表达式组成的算术 IF 语句:
IF exp1 exp2 exp3 exp4
其中,如果 exp1 为负数,则返回 exp2,如果 exp1 为零,则返回 exp3,如果 exp1 为正数,则返回 exp4。
运算符是 + 或 x(分别用于加法和乘法)。
我必须一起实现一个扫描器/解析器,然后是输出结果的解释器。解释器部分并不难,但我无法弄清楚如何开始扫描/解析过程。
我从使用 Java 开始,并让 Scanner 对象收集输入并将其存储在字符串中。然后我将字符串拆分为一个字符串数组,不使用任何内容作为分隔符(这样每个字符、符号、空格等都存储在它自己的字符串索引中)。这可能不是最好的方法,因为我不知道从这里去哪里。我无法掌握的部分是如果不遵循此语法如何返回错误,或者如何检测括号和/或 IF 等。
这是我在上一段中描述的代码片段:
public void run() {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String sLine = sc.nextLine();
String[] scanned = sLine.split("");
输入示例:
(7 2 +)
Output: 9
IF (2 -2 +) (5 2 +) (5 -2 x) (5 2 x)
Output: -10
如果有人对我有好的方向,请分享。:)