⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lang.js

📁 SugarCRM5.1 开源PHP客户关系管理系统
💻 JS
📖 第 1 页 / 共 2 页
字号:
            return this._working.length == 0;        }                publ.nextNonWS = function(nlIsWS){            var tkn = this.next();            while((tkn.type == mod.tokens.WSP) ||  (nlIsWS && (tkn.type == mod.tokens.NL))){                tkn = this.next();            }            return tkn;        }                /**            Returns the next token.            @return The next token.        */        publ.next = function(){            if(this._working ==""){                throw new mod.Exception("Empty");            }             var s1 = this._working.charAt(0);            var s2 = s1 + this._working.charAt(1);            var s3 = s2 + this._working.charAt(2);            var rslt=[];            switch(s1){                case '"': case "'":                    try{                        s1 = extractQString(this._working);                        rslt= new mod.Token(mod.tokens.STR, s1, this._pos);                    }catch(e){                        rslt= new mod.Token(mod.tokens.ERR, s1, this._pos, e);                    }                    break;                case "\n": case "\r":                    rslt =new mod.Token(mod.tokens.NL, s1, this._pos);                    break;                   case "-": //check for negative numbers                    s1=this._working.match(/-\d+\.\d+|-\d+/)[0];                    if(/^-\d|-\d\.\d/.test(s1)){//number                        rslt =  new mod.Token(mod.tokens.NUM, s1, this._pos);                        break;                    }                                case "{": case "}": case "[": case "]": case "(": case ")":                case ":": case ",": case ".": case ";":                case "*": case "-": case "+":                case "=": case "<": case ">":  case "!":                   case "|": case "&":                    switch(s2){                        case "==": case "!=": case "<>":  case "<=": case ">=":case "||": case "&&":                            rslt = new mod.Token(mod.tokens.OP, s2, this._pos);                            break;                        default:                            rslt = new mod.Token(mod.tokens.OP, s1, this._pos);                    }                    break;                case "/":                    if(s2 == "//" || s3 =="///"){                        s1 = extractSLComment(this._working);                        rslt = new mod.Token(s1.charAt(2) != "/" ? mod.tokens.COMMENT:mod.tokens.DOCCOMMENT, s1, this._pos);                    }else if(s2 == "/*" || s3 =="/**"){                        try{                            s1 = extractMLComment(this._working);                            rslt = new mod.Token(s3 !="/**" ? mod.tokens.COMMENT: mod.tokens.DOCCOMMENT, s1, this._pos);                        }catch(e){                            rslt= new mod.Token(mod.tokens.ERR, s3 != "/**" ? s2 : s3, this._pos, e);                        }                    }else{                        try{                            s1 = extractRegExp(this._working);                            rslt  = new mod.Token(mod.tokens.REGEXP, s1, this._pos);                        }catch(e){                            rslt = new mod.Token(mod.tokens.OP, s1, this._pos, e);                        }                    }                    break;                case " ":                    var i = 0;                    var s="";                    while(this._working.charAt(i) == " "){                        s+=" ";                        i++;                    }                    rslt = new mod.Token(mod.tokens.WSP, s, this._pos);                    break;                default:                    s1=this._working.match(/\d+\.\d+|\d+|\w+/)[0];                    if(/^\d|\d\.\d/.test(s1)){//number                        rslt =  new mod.Token(mod.tokens.NUM, s1, this._pos);                    }else{//name                        rslt =new mod.Token(mod.tokens.NAME, s1, this._pos);                    }            }                        this._working=this._working.slice(rslt.value.length);            this._pos += rslt.value.length;            return rslt;        }                var searchQoute = function(s, q){            if(q=="'"){                return s.search(/[\\']/);            }else{                return s.search(/[\\"]/);            }        }                var extractQString=function(s){            if(s.charAt(0) == "'"){                var q="'";            }else{                var q='"';            }            s=s.slice(1);            var rs="";            var p= searchQoute(s, q);            while(p >= 0){                if(p >=0){                    if(s.charAt(p) == q){                        rs += s.slice(0, p+1);                        s = s.slice(p+1);                        return q + rs;                    }else{                        rs+=s.slice(0, p+2);                        s = s.slice(p+2);                    }                }                p = searchQoute(s, q);            }            throw new mod.Exception("End of String expected.");        }                var extractSLComment=function(s){            var p = s.search(/\n/);            if(p>=0){                return s.slice(0,p+1);            }else{                return s;            }        }                var extractMLComment=function(s){            var p = s.search(/\*\//);            if(p>=0){                return s.slice(0,p+2);            }else{                throw new mod.Exception("End of comment expected.");            }        }                var extractRegExp=function(s){            var p=0;            for(var i=0;i<s.length;i++){                if(s.charAt(i) == "/"){                    p=i;                }                if(s.charAt(i) == "\n"){                    i = s.length;                }            }            return s.slice(0,p+1);        }    })        /**        Converts an object to JSON.    */    Object.prototype.toJSON = function(){        var v=[];        for(attr in this){            if(typeof this[attr] != "function"){                v.push('"' + attr + '": ' + mod.objToJson(this[attr]));            }        }        return "{" + v.join(", ") + "}";    }        /**        Converts a String to JSON.    */    String.prototype.toJSON = function(){        var s = '"' + this.replace(/(["\\])/g, '\\$1') + '"';        s = s.replace(/(\n)/g,"\\n");        return s;    }        /**        Converts a Number to JSON.    */    Number.prototype.toJSON = function(){        return this.toString();    }        /**        Converts a Boolean to JSON.    */    Boolean.prototype.toJSON = function(){        return this.toString();    }        /**        Converts a Date to JSON.        Date representation is not defined in JSON.    */    Date.prototype.toJSON= function(){        var padd=function(s, p){            s=p+s            return s.substring(s.length - p.length)        }        var y = padd(this.getUTCFullYear(), "0000");        var m = padd(this.getUTCMonth() + 1, "00");        var d = padd(this.getUTCDate(), "00");        var h = padd(this.getUTCHours(), "00");        var min = padd(this.getUTCMinutes(), "00");        var s = padd(this.getUTCSeconds(), "00");                var isodate = y +  m  + d + "T" + h +  ":" + min + ":" + s                return '{"jsonclass":["sys.ISODate", ["' + isodate + '"]]}';    }        /**        Converts an Array to JSON.    */    Array.prototype.toJSON = function(){        var v = [];        for(var i=0;i<this.length;i++){            v.push(mod.objToJson(this[i])) ;        }        return "[" + v.join(", ") + "]";    }            mod.test=function(){        try{            print(mod.jsonToObj("['sds', -12377,-1212.1212, 12, '-2312']").toJSON());        }catch(e){            print(e.toTraceString());        }            }    })

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -