public override void visit(while_node wn) { ProcessNode(wn.statements); var gt1 = new goto_statement(newLabelName()); var gt2 = new goto_statement(newLabelName()); var gt3 = new goto_statement(newLabelName()); var if0 = new if_node(wn.expr, gt1, null); var lb3 = new labeled_statement(gt3.label, if0); var lb1 = new labeled_statement(gt1.label, wn.statements); var lb2 = new labeled_statement(gt2.label, new empty_statement()); var stl = new statement_list(lb3, gt2, lb1, gt3, lb2); Replace(wn, stl); // в declarations ближайшего блока добавить описание labels block bl = listNodes.FindLast(x => x is block) as block; var ld = new label_definitions(gt1.label, gt2.label, gt3.label); bl.defs.Add(ld); }
public override void visit(label_definitions _label_definitions) { }
public virtual void post_do_visit(label_definitions _label_definitions) { }
public virtual void visit(label_definitions _label_definitions) { DefaultVisit(_label_definitions); }
public virtual void visit(label_definitions _label_definitions) { }
public override void visit(label_definitions _label_definitions) { DefaultVisit(_label_definitions); pre_do_visit(_label_definitions); visit(label_definitions.labels); post_do_visit(_label_definitions); }
public override void visit(label_definitions _label_definitions) { AddPossibleComments(_label_definitions, true, false); _label_definitions.labels.visit(this); }
public virtual void visit(label_definitions _label_definitions) { }
public virtual void visit(label_definitions _label_definitions) { DefaultVisit(_label_definitions); }
public override void visit(label_definitions _label_definitions) { prepare_node(_label_definitions.labels, "labels"); }
public override void visit(label_definitions _label_definitions) { executer.visit(_label_definitions); if (_label_definitions.labels != null) this.visit((dynamic)_label_definitions.labels); if (_label_definitions.attributes != null) this.visit((dynamic)_label_definitions.attributes); }