[英]Do Prefix Notation with Cup
我创建以下代码:
import java_cup.runtime.*;
terminal MAS,MENOS,POR,DIV,AP,CP,MINUS;
terminal String NUMERO,IDENT;
non terminal A;
precedence left MAS,MENOS;
precedence left POR,DIV;
precedence left AP,CP;
precedence left MINUS;
A ::= A:a1 MAS {:System.out.print("+ ");:} A:a2 {:System.out.print(a1+""+a2+" ");RESULT = "";:}
| A:a1 MENOS {:System.out.print("- ");:} A:a2 {:System.out.print(a1+""+a2+" ");RESULT = "";:}
| A:a1 POR {:System.out.print("* ");:} A:a2 {:System.out.print(a1+""+a2+" ");RESULT = "";:}
| A:a1 DIV {:System.out.print("/ ");:} A:a2 {:System.out.print(a1+""+a2+" ");RESULT = "";:}
| AP {:System.out.print("");:} A:a1 CP {:System.out.print("");RESULT = "";:}
| NUMERO:n1 {:RESULT = n1+" ";:}
| IDENT:i1 {:RESULT = i1+" ";:}
| MENOS A:a1
%prec MINUS;
该表达式的解决方案:alfa + beta * gamma +77是+ + alfa * beta gamma 77,但是该程序未显示正确的解决方案,有人可以帮助我吗?
当您应该像使用标识符和数字一样将其作为RESULT
返回时,就在打印运算符的中间值。 您仅应在解析完整个表达式后才打印字符串。 (您可以为此使用单位生产。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.