javascript设计模式之解释器模式详解(12)

/**
             * 把分解出来的元素名称根据对应的解析模型转换成为相应的解释器对象
             * @param  {Object} mapPath [分解出来的需解析的元素名称,还有该元素对应的解析模型]
             * @return {Array}         [把每个元素转换成为相应的解释器对象后的数组]
             */
            function mapPath2Interpreter(mapPath) {
                var list = [];
                var pm, key;
                var obj = null;

// 一定要按照分解的先后顺序来转换成解释器对象
                for (var i = 0, len = listEle.length; i < len; i++) {
                    key = listEle[i];
                    pm = mapPath[key];

// 不是最后一个
                    if (!pm.isEnd()) {

if (pm.isSingleValue())
                        // 是一个值,转化
                            obj = new ElementExpression(key);
                        else
                        // 是多个值,转化
                            obj = new ElementsExpression(key);

} else {
                        // 是最后一个

// 是属性值
                        if (pm.isPropertyValue()) {
                            if (pm.isSingleValue())
                                obj = new PropertyTerminalExpression(key);
                            else
                                obj = new PropertysTerminalExpression(key);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgpjfd.html