//==================================================== // javaScript$ (constructor) //==================================================== function javaScript$(sourceCode) { this.sourceCode = sourceCode; this.length = sourceCode.length; this.line = 1; this.character = 0; this.position = 0; //-------------- methods ---------------- this.nextToken = javaScript$nextToken; this.getVariable = javaScript$getVariable; this.getNumber = javaScript$getNumber; this.getOther = javaScript$getOther; this.skipWhiteSpace = javaScript$skipWhiteSpace; this.init = javaScript$init; //--------------------------------------- this.init(); } //=================================================== // nextToken //=================================================== function javaScript$nextToken() { var n; while (this.position < this.length) { n = this.sourceCode.charCodeAt(this.position); this.position += 1; this.character += 1; if (this.blank.test(n)) { this.skipWhiteSpace(n); continue; } if (this.number.test(n)) return this.getNumber(n); if (this.first.test(n)) return this.getVariable(n); return this.getOther(n); } return null; } //=================================================== // getNumber //=================================================== function javaScript$getNumber(n) { var token; token = new token$(this,n,'number'); // TODO ---- keep adding to number until done ----- return token; } //=================================================== // skipWhiteSpace //=================================================== function javaScript$skipWhiteSpace(n) { // TODO -- Trace Line Number and Character Postions ------- } //=================================================== // getVariable //=================================================== function javaScript$getVariable(n) { var token; token = new token$(this,n,'variable'); // TODO ---- keep adding to variable until done ----- return token; } //=================================================== // getOther //=================================================== function javaScript$getOther(n) { var token; token = new token$(this,n,'other'); // TODO ---- keep adding to other until done ----- return token; } //=================================================== // init //=================================================== function javaScript$init() { var first,second,blank,number; first = {"count":48656,"bitmap":[36,1,28,26,4,1,1,26,47,1,10,1,4,1,5,23,1,31,1,458,4,12,14,5,7,1,1,1,129,5,1,2,2,4,1,1,6,1,1,3,1,1,1,20,1,83,1,139,8,166,1,38,2,1,7,39,72,27,5,3,45,43,35,2,1,99,1,1,15,2,7,2,10,3,2,1,16,1,1,30,29,89,11,1,24,33,9,2,4,1,5,22,4,1,9,1,3,1,23,25,71,19,81,54,3,1,18,1,7,10,15,16,4,8,2,2,2,22,1,7,1,1,3,4,3,1,16,1,13,2,1,3,14,2,19,6,4,2,2,22,1,7,1,2,1,2,1,2,31,4,1,1,19,3,16,9,1,3,1,22,1,7,1,2,1,5,3,1,18,1,15,2,35,8,2,2,2,22,1,7,1,2,1,5,3,1,30,2,1,3,15,1,17,1,1,6,3,3,1,4,3,2,1,1,1,2,3,2,3,3,3,12,22,1,52,8,1,3,1,23,1,16,3,1,26,2,6,2,35,8,1,3,1,23,1,10,1,5,3,1,32,1,1,2,15,2,18,8,1,3,1,41,2,1,16,1,17,2,24,6,5,18,3,24,1,9,1,1,2,7,58,48,1,2,12,7,58,2,1,1,2,2,1,1,2,1,6,4,1,7,1,3,1,1,1,1,2,2,1,4,1,2,9,1,2,5,1,1,21,4,32,1,63,8,1,36,27,5,115,43,20,1,16,6,4,4,3,1,3,2,7,3,4,13,12,1,17,38,1,1,5,1,2,43,1,333,1,4,2,7,1,1,1,4,2,41,1,4,2,33,1,4,2,7,1,1,1,4,2,15,1,57,1,4,2,67,37,16,16,85,12,620,2,17,1,26,5,75,3,11,7,13,1,4,14,18,14,18,14,13,1,3,15,52,35,1,4,1,67,88,8,41,1,1,5,70,10,31,49,30,2,5,11,44,21,7,56,23,9,53,82,1,93,47,17,7,55,30,13,2,10,44,26,36,41,3,10,36,107,4,1,4,3,2,9,192,64,278,2,6,2,38,2,6,2,8,1,1,1,1,1,1,1,31,2,53,1,7,1,1,3,3,1,7,3,4,2,6,4,13,5,3,1,7,116,1,13,1,16,13,101,1,4,1,2,10,1,1,2,6,6,1,1,1,1,1,1,16,2,4,5,5,4,1,17,41,2679,47,1,47,1,133,6,4,3,2,12,38,1,1,5,1,2,56,7,1,16,23,9,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,550,3,25,9,7,5,2,5,4,86,4,5,1,90,1,4,5,41,3,94,17,27,53,16,512,6582,74,20941,51,1165,67,46,2,269,3,16,10,2,20,47,16,31,2,80,39,9,2,103,2,4,1,30,2,2,69,11,1,3,1,4,1,23,29,52,14,50,62,6,3,1,14,28,10,23,25,29,7,47,28,1,16,5,1,10,10,5,1,41,23,3,1,8,20,23,3,1,3,50,1,1,3,2,2,5,2,1,1,1,24,3,2,11,7,3,12,6,2,6,2,6,9,7,1,7,1,43,1,4,4,2,90,35,29,11172,12,23,4,49,8452,366,2,106,38,7,12,5,5,1,1,10,1,13,1,5,1,1,1,2,1,2,1,108,33,363,18,64,2,54,40,12,116,5,1,135,36,26,6,26,11,89,3,6,2,6,2,6,2,3]}; second = {"count":1656,"bitmap":[48,10,125,1,584,112,23,1,251,5,265,45,1,1,1,2,1,2,1,1,72,11,48,31,6,1,101,7,2,6,2,2,1,4,2,10,23,1,30,27,91,11,15,10,33,9,34,4,1,9,1,3,1,5,43,3,136,32,54,3,1,18,1,7,10,2,2,10,17,3,56,1,1,7,2,2,2,3,9,1,10,2,2,10,17,3,56,1,1,5,4,2,2,3,3,1,20,12,3,1,11,3,56,1,1,8,1,3,1,3,20,2,2,10,17,3,56,1,1,7,2,2,2,3,8,2,10,2,2,10,18,1,59,5,3,3,1,4,9,1,14,10,16,4,58,7,1,3,1,4,7,2,11,2,2,10,17,3,56,1,1,7,1,3,1,4,7,2,11,2,2,10,17,3,58,7,1,3,1,4,9,1,10,2,2,10,18,2,70,1,4,6,1,1,1,8,6,10,2,2,61,1,2,7,12,8,1,10,87,1,2,6,1,2,11,6,2,10,62,2,6,10,11,1,1,1,1,1,4,2,49,20,1,2,5,11,1,36,9,1,100,20,1,10,12,4,4,3,1,3,2,7,3,4,13,12,1,15,703,3,9,9,928,3,29,3,29,2,30,2,64,32,9,1,2,10,33,3,2,10,143,1,118,12,4,12,10,10,96,17,7,2,6,11,60,5,57,10,1,29,2,11,6,10,22,14,66,5,47,17,11,10,17,9,12,3,30,13,2,10,44,14,48,20,8,10,6,10,118,3,1,21,4,1,4,3,3,2,198,54,6,4,524,2,49,2,19,1,123,13,4,1,3,12,3070,3,141,1,96,32,554,6,105,2,30085,10,69,1,4,10,33,1,80,2,272,1,3,1,4,1,23,5,88,2,50,17,11,10,6,18,14,10,28,8,25,13,44,4,47,14,15,10,11,1,10,10,47,14,12,1,8,2,2,10,33,3,50,1,1,3,2,2,5,2,1,1,41,5,5,2,236,8,1,2,2,10,20260,1,737,16,16,14,5,2,24,3,192,10,37,1,190,1]}; blank = {"count":26,"bitmap":[9,5,18,1,127,1,5599,1,397,1,2033,11,29,2,5,1,47,1,4000,1,52990,1]}; number = {"count":10,"bitmap":[48,10]}; this.first = new bits$(first); this.second = new bits$(second); this.blank = new bits$(blank); this.number = new bits$(number); } //==================================================== // token$ //==================================================== function token$(parent,n,type) { this.value = String.fromCharCode(n); this.line = parent.line; this.character = parent.character; this.type = type; }