public
	Analyser(StringBuilder builder, Logger log)
	{
                this.log      = log;
                this.code     = builder.toString();
                if(log_level >= 3) log.log(3, key, "Analyser is doing stuff please wait ...", "\n");

                types = new TYPES(log);

                program_stack        = new intStack(100);
                function_stack       = new intStack(100);
                function_block_stack = new intStack(100);
                var_stack            = new intStack(100);
                case_stack           = new intStack(100);
                for_stack            = new intStack(100);
                while_stack          = new intStack(100);
                repeat_stack         = new intStack(100);
                if_stack             = new intStack(100);

                program_map        = new TreeMap<>();
                function_map       = new TreeMap<>();
                function_block_map = new TreeMap<>();
                var_map            = new TreeMap<>();
                case_map           = new TreeMap<>();
                for_map            = new TreeMap<>();
                while_map          = new TreeMap<>();
                repeat_map         = new TreeMap<>();
                if_map             = new TreeMap<>();

                context_varname_var     = new HashMap<>();
                address_mappedbyte_in   = new HashMap<>();
                address_mappedbyte_out  = new HashMap<>();
                com_channel_queue       = new LinkedBlockingQueue<>();
                functioname_inputid_var = new HashMap<>();
                program_startpoint      = new HashMap<>();
                function_startpoint     = new HashMap<>();

                var_global_start = -1;
                var_config_start = -1;

                if(log_level >= 4) log.log(4, key, "run analyse()", "\n");
                analyse();
                if(log_level >= 4) log.log(4, key, "analyse() finished", "\n");
                if(log_level >= 4) log.log(4, key, "run build_function_structure()", "\n");
                build_function_structure();
                if(log_level >= 4) log.log(4, key, "build_function_structure finished", "\n");

                generate_symbols_list();
	}