public void setMacrosVars(String str, Macros m){
        if((!str.contains("[") || (!str.contains("]")))){
            throw new RuntimeException("это не валидная область аргументов!");
        }

        String argsArea = str.substring(str.indexOf("[")+1, str.indexOf("]")).trim();
        List<String> lexems = ParsingUtils.getLexems(argsArea);
        
        Macros.VariablesStore vs  = m.getVariables();
        int varCount = 0;
        
        boolean positionVarsEnded = false;
        for(String arg : lexems){

            if(!arg.contains("=")){
                //позиц
                if(!positionVarsEnded){

                    if(varCount < m.getVariables().varSeqCount()){
                        vs.setVariableValue(varCount, arg);
                        varCount++;
                    } else {
                        throw new RuntimeException("too many args!");
                    }
                } else {
                   throw new RuntimeException("position arg definition expected!");
                }

            } else {
                //ключевой
                positionVarsEnded =true;
                String varName = arg.substring(0, arg.indexOf("="));

                String varVal = arg.substring(arg.indexOf("=")+1);

                if(vs.isVariableExists(varName) && vs.isVariableKeyVar(varName)){
                    vs.setVariableValue(varName, varVal);
                } else {
                    throw new RuntimeException("неопознанная конструкция. Str: '"+str+"'");
                }
            }
            
        }

        if(varCount < vs.varSeqCount()){
            throw new RuntimeException("мало аргументов в вызове макроса");
        }


//        // если арг не передан то можно попробовать поискать его у родителя
//        if(varCount < vs.varSeqCount()){
//            for(int i = varCount; i < vs.varSeqCount(); i++){
//                String s = vs.getVariableVAlFromGlobalContext(vs.getVarsSequence().get(i));
//                if(s != null){
//                    vs.setVariableValue(i, s);
//                }
//            }
//        }
        
    }