📄 ifnode.java
字号:
package ast.statement;
public class IfNode extends ast.statement.StatementNode {
private ast.booleanExpr.JSubBooleanNode expr = null;
private ast.IJSubNode trueStatement;
private ast.IJSubNode falseStatement;
public String toString (String prefix) {
return prefix + "if";
}
public IfNode (ast.booleanExpr.JSubBooleanNode expr, ast.IJSubNode s1, ast.IJSubNode s2) {
this.expr = expr;
trueStatement = s1;
falseStatement = s2;
}
public void dump(String prefix) {
System.out.println ("if");
expr.dump (prefix + " ");
if (trueStatement != null)
trueStatement.dump (prefix + " ");
if (falseStatement != null)
falseStatement.dump (prefix + " ");
}
public void codegen () {
int label = codegen.WriteCode.getLabel ();
int labelEqual = 0;
if (falseStatement != null)
labelEqual = codegen.WriteCode.getLabel ();
expr.codegen (label, false);
if (trueStatement != null)
trueStatement.codegen ();
if (falseStatement != null) {
codegen.WriteCode.genGoto (labelEqual);
codegen.WriteCode.genLabel (label);
falseStatement.codegen ();
codegen.WriteCode.genLabel (labelEqual);
} else
codegen.WriteCode.genLabel (label);
}
public int getDepth () {
int nExprDepth = expr == null? 0: expr.getDepth ();
int ntrueStatementDepth = trueStatement == null? 0: trueStatement.getDepth ();
int nfalseStatementDepth = falseStatement == null? 0: falseStatement.getDepth ();
return java.lang.Math.max (nExprDepth, java.lang.Math.max(ntrueStatementDepth, nfalseStatementDepth));
}
public String getXMLType () {
return "if";
}
public void genXML (java.io.PrintStream p, String prefix) {
p.println (prefix + "<ifstatement>");
expr.genXML (p, prefix + " ");
if (trueStatement != null)
trueStatement.genXML (p, prefix + " ");
if (falseStatement != null)
falseStatement.genXML (p, prefix + " ");
p.println (prefix + "</ifstatement>");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -