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);
 }
Beispiel #5
0
 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);
		}
Beispiel #7
0
 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);
		}
Beispiel #10
0
 public override void visit(label_definitions _label_definitions)
 {
     prepare_node(_label_definitions.labels, "labels");
 }
Beispiel #11
0
		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);
		}