public virtual expression cond_expression(cond_expression ast, int lvalue, int rvalue) { ast.cond = expression(ast.cond); ast.failure = expression(ast.failure); ast.success = expression(ast.success); return(wrap(ast, rvalue)); }
virtual public void cond_expression(cond_expression ast, int parent) { // int myprec = prec("?:"); // if (myprec <= parent) // parenexpr(ast); // else { // visit(ast.cond, myprec); // Write(" ? "); // visit(ast.success, myprec); // Write(" : "); // visit(ast.failure, myprec); // } }
virtual public void cond_expression(cond_expression ast, int parent) { int myprec = prec("?:"); if (myprec <= parent) { parenexpr(ast); } else { visit(ast.cond, myprec); Write(" ? "); visit(ast.success, myprec); Write(" : "); visit(ast.failure, myprec); } }