我目前正在使用 JFLEX 和 CUP 制作编译器。
我有一个存储键和值的哈希图(v)
action code {:
public static HashMap<String, Object> hm = new HashMap<>();
public static void Put(String identifier, Object value) {
hm.put(identifier, value);
}
public static Object Get(String identifier) {
return hm.get(identifier);
}
public static void Show(String value) {
System.out.println("Result: " + value);
System.out.println("END.");
}
:};
我希望我的编译器能够识别这个
start
x=1;
y=2;
z=x+y;
print(z);
end
我可以将值分配给x和y,但我无法添加它们并将它们分配给新密钥。
asing部分的代码是这样的,在哪里ASIGN is =
和IDENTIFIER is a letter
expresion is a Number
statement::= IDENTIFIER:v
{: RESULT = Get((String)v); :}
| IDENTIFIER:v ASIGN expresion:e {: Put((String)v, e); :}
| IDENTIFIER:v1 ASIGN IDENTIFIER:v2 {: Put((String)v1, Get((String)v2)); :}
我想要实现的是这样的
IDENTIFIER:v1 ASIGN IDENTIFIER:v2 SUM IDENTIFIER:v3 {: Put((String)v1, Get((String)v2+v3)); :}
我不知道我是否需要一个特殊的总和代码,或者他们是否因为 String 类型而没有添加。
我会很感激一些帮助谢谢