whilenode.java
来自「一个JAVA编写的简单编译器」· Java 代码 · 共 50 行
JAVA
50 行
package ast.statement;
public class WhileNode extends StatementNode {
private ast.booleanExpr.JSubBooleanNode expr = null;
private ast.IJSubNode statement;
public String toString (String prefix) {
return prefix + "while";
}
public WhileNode (ast.booleanExpr.JSubBooleanNode expr, ast.IJSubNode statement){
this.expr = expr;
this.statement = statement;
}
public void dump(String prefix) {
System.out.println ("if");
expr.dump (prefix + " ");
if (statement != null)
statement.dump (prefix + " ");
}
public void codegen () {
int labelStart = codegen.WriteCode.getLabel ();
int labelEnd = codegen.WriteCode.getLabel ();
codegen.WriteCode.genLabel (labelStart);
expr.codegen (labelEnd, false);
if (statement != null) {
statement.codegen ();
codegen.WriteCode.genGoto (labelStart);
}
codegen.WriteCode.genLabel (labelEnd);
}
public int getDepth () {
int nExprDepth = expr == null? 0: expr.getDepth ();
int nstatementDepth = statement == null? 0: statement.getDepth ();
return java.lang.Math.max (nExprDepth, nstatementDepth);
}
public String getXMLType () {
return "while";
}
public void genXML (java.io.PrintStream p, String prefix) {
p.println (prefix + "<whilestatement>");
expr.genXML (p, prefix + " ");
if (statement != null)
statement.genXML (p, prefix + " ");
p.println (prefix + "</whilestatement>");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?