t_colon.java
来自「中山大学编译原理课程的一个实验」· Java 代码 · 共 50 行
JAVA
50 行
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package symbols;import exceptions.ExpressionException;import exceptions.TrinaryOperationException;import exceptions.TypeMismatchedException;import java.util.ArrayList;/** * * @author Beeven */public class T_COLON extends Terminal implements TerminalReduce{ public Expr reduce(ArrayList<Expr> stack) throws ExpressionException { int post=stack.size()-1; // be?ae:ae Expr a=stack.get(post); // ae Expr b=stack.get(post-1);// : Expr c=stack.get(post-2);// ae Expr d=stack.get(post-3);// ? Expr e=stack.get(post-4);//be if(!(a instanceof ArithExpr) || !(c instanceof ArithExpr)|| !(e instanceof BoolExpr)) throw new TypeMismatchedException(); if(!(d.type==Type.qm)) throw new TrinaryOperationException(); if(((BoolExpr)e).value==true) { stack.remove(post); stack.remove(post-1); stack.remove(post-3); stack.remove(post-4); return c; } else { stack.remove(post-1); stack.remove(post-2); stack.remove(post-3); stack.remove(post-4); return a; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?