0

我目前正在使用 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

我可以将值分配给xy,但我无法添加它们并将它们分配给新密钥。

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 类型而没有添加。

我会很感激一些帮助谢谢

4

0 回答 0