public statement MyStmt(expression ex, statement st)
        {
            // Проверить, что в ex - целый тип
            // Сделать специальный узел для проверки new semantic_check("Тип проверки",params syntax_node[] ob)
            // Включать этот узел первым для "сахарных" узлов синтаксического дерева
            var sc = new semantic_check("ExprIsInteger", ex);

            var id     = new ident("#my");
            var idlist = new ident_list(id);
            var typ    = new named_type_reference("integer");
            var one    = new int32_const(1);
            var vdef   = new var_def_statement(idlist, typ, one, definition_attribute.None, false, null);
            var vstat  = new var_statement(vdef, null);

            var ass         = new assign(new ident("#my"), one, Operators.AssignmentAddition);
            var stlistwhile = new statement_list(st);

            stlistwhile.Add(ass);

            var bin = new bin_expr(id, ex, Operators.LessEqual);

            var wh = new while_node(bin, stlistwhile, WhileCycleType.While);

            var stlist = new statement_list(sc);

            stlist.Add(vstat);
            stlist.Add(wh);
            return(stlist);
        }
예제 #2
0
 public virtual void visit(semantic_check _semantic_check)
 {
     DefaultVisit(_semantic_check);
 }
예제 #3
0
 public override void visit(semantic_check _semantic_check)
 {
     throw new NotImplementedException();
 }
예제 #4
0
		public virtual void post_do_visit(semantic_check _semantic_check)
		{
		}
예제 #5
0
		public override void visit(semantic_check _semantic_check)
		{
			DefaultVisit(_semantic_check);
			pre_do_visit(_semantic_check);
			for (int i = 0; i < param.Count; i++)
				visit(semantic_check.param[i]);
			post_do_visit(_semantic_check);
		}
예제 #6
0
 public virtual void visit(semantic_check _semantic_check)
 {
 }
예제 #7
0
 public override void visit(semantic_check _semantic_check)
 {
 }
예제 #8
0
		public virtual void visit(semantic_check _semantic_check)
		{
		}
		public virtual void visit(semantic_check _semantic_check)
		{
			DefaultVisit(_semantic_check);
		}
예제 #10
0
		public override void visit(semantic_check _semantic_check)
		{
			executer.visit(_semantic_check);
			if (_semantic_check.param != null)
			foreach (dynamic x in _semantic_check.param)
				if(x != null)
					this.visit(x);
			if (_semantic_check.attributes != null)
				this.visit((dynamic)_semantic_check.attributes);
		}