00001: package clogs.ast; 00002: 00003: import clogs.util.List; 00004: 00005: 00006: public class StatIf extends Stat 00007: { 00008: public final Exp exp; 00009: public final Stat statT; 00010: public final Stat statF; 00011: 00012: 00013: public StatIf (Exp exp, Stat statT, Stat statF) 00014: { 00015: this (List.<String>nil (), exp, statT, statF); 00016: } 00017: 00018: 00019: StatIf (List<String> labels, Exp exp, Stat statT, Stat statF) 00020: { 00021: super (labels); 00022: clogs.util.NonNull.check (exp, statT, statF); 00023: this.exp = exp; 00024: this.statT = statT; 00025: this.statF = statF; 00026: } 00027: 00028: 00029: public Stat removeLabels () 00030: { 00031: return new StatIf (List.<String> nil (), exp, statT, statF); 00032: } 00033: 00034: 00035: public Stat addLabel (String label) 00036: { 00037: return new StatIf (labels.cons (label), exp, statT, statF); 00038: } 00039: } 00040: