function class__KeywordScanner__(window) { var classId = arguments.callee.toString().match(/class__(\w+)__/)[1]; /** * f(char[] source) */ var F = window[classId] = function(source) { this.source = source; this.eofPosition = this.source.length; if (this.constructor !== F) this.constructor = F; }; var FP = F.prototype; /** * スタート位置からの文字列がbreakキーワードかを調べる. * スタート位置の前の単語は調べない. * * boolean f(int startPosition, int offset) * * @param startPosition スタート位置. * @param offset スタート位置からのオフセット量. * 例えばこの値が1のとき,bを飛ばしてreakでマッチするかを調べる. */ FP.test_break = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'b') return false; break; case 1 : if (ch != 'r') return false; break; case 2 : if (ch != 'e') return false; break; case 3 : if (ch != 'a') return false; break; case 4 : if (ch != 'k') return false; break; case 5 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_case = function(startPosition, offset) { for (var i = offset; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'c') return false; break; case 1 : if (ch != 'a') return false; break; case 2 : if (ch != 's') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case '[' : case '{' : case '\"' : case '\'' : return true; default : return false; } } } return false; }; FP.test_catch = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'c') return false; break; case 1 : if (ch != 'a') return false; break; case 2 : if (ch != 't') return false; break; case 3 : if (ch != 'c') return false; break; case 4 : if (ch != 'h') return false; break; case 5 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_class = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'c') return false; break; case 1 : if (ch != 'l') return false; break; case 2 : if (ch != 'a') return false; break; case 3 : if (ch != 's') return false; break; case 4 : if (ch != 's') return false; break; case 5 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : return true; default : return false; } } } return false; }; FP.test_continue = function(startPosition, offset) { for (var i = 0; i < 8 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'c') return false; break; case 1 : if (ch != 'o') return false; break; case 2 : if (ch != 'n') return false; break; case 3 : if (ch != 't') return false; break; case 4 : if (ch != 'i') return false; break; case 5 : if (ch != 'n') return false; break; case 6 : if (ch != 'u') return false; break; case 7 : if (ch != 'e') return false; break; case 8 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_default = function(startPosition, offset) { for (var i = 0; i < 7 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'd') return false; break; case 1 : if (ch != 'e') return false; break; case 2 : if (ch != 'f') return false; break; case 3 : if (ch != 'a') return false; break; case 4 : if (ch != 'u') return false; break; case 5 : if (ch != 'l') return false; break; case 6 : if (ch != 't') return false; break; case 7 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ':' : return true; default : return false; } } } return false; }; FP.test_delete = function(startPosition, offset) { for (var i = 0; i < 6 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'd') return false; break; case 1 : if (ch != 'e') return false; break; case 2 : if (ch != 'l') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : if (ch != 't') return false; break; case 5 : if (ch != 'e') return false; break; case 6 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case '[' : case '{' : case '\"' : case '\'' : return true; default : return false; } } } return false; }; FP.test_do = function(startPosition, offset) { for (var i = 0; i < 2 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'd') return false; break; case 1 : if (ch != 'o') return false; break; case 2 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '{' : return true; default : return false; } } } return false; }; FP.test_else = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'e') return false; break; case 1 : if (ch != 'l') return false; break; case 2 : if (ch != 's') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '{' : return true; default : return false; } } } return false; }; FP.test_false = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'f') return false; break; case 1 : if (ch != 'a') return false; break; case 2 : if (ch != 'l') return false; break; case 3 : if (ch != 's') return false; break; case 4 : if (ch != 'e') return false; break; case 5 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_finally = function(startPosition, offset) { for (var i = 0; i < 7 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'f') return false; break; case 1 : if (ch != 'i') return false; break; case 2 : if (ch != 'n') return false; break; case 3 : if (ch != 'a') return false; break; case 4 : if (ch != 'l') return false; break; case 5 : if (ch != 'l') return false; break; case 6 : if (ch != 'y') return false; break; case 7 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '{' : return true; default : return false; } } } return false; }; FP.test_for = function(startPosition, offset) { for (var i = 0; i < 3 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'f') return false; break; case 1 : if (ch != 'o') return false; break; case 2 : if (ch != 'r') return false; break; case 3 : { switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } } return false; }; FP.test_function = function(startPosition, offset) { for (var i = 0; i < 8 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'f') return false; break; case 1 : if (ch != 'u') return false; break; case 2 : if (ch != 'n') return false; break; case 3 : if (ch != 'c') return false; break; case 4 : if (ch != 't') return false; break; case 5 : if (ch != 'i') return false; break; case 6 : if (ch != 'o') return false; break; case 7 : if (ch != 'n') return false; break; case 8 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_if = function(startPosition, offset) { for (var i = 0; i < 2 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'i') return false; break; case 1 : if (ch != 'f') return false; break; case 2 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_in = function(startPosition, offset) { for (var i = 0; i < 2 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'i') return false; break; case 1 : if (ch != 'n') return false; break; case 2 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case '{' : case '[' : case '\"' : case '\'' : return true; default : return false; } } } return false; }; FP.test_new = function(startPosition, offset) { for (var i = 0; i < 3 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'n') return false; break; case 1 : if (ch != 'e') return false; break; case 2 : if (ch != 'w') return false; break; case 3 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : return true; default : return false; } } } return false; }; FP.test_null = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'n') return false; break; case 1 : if (ch != 'u') return false; break; case 2 : if (ch != 'l') return false; break; case 3 : if (ch != 'l') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_return = function(startPosition, offset) { for (var i = 0; i < 6 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'r') return false; break; case 1 : if (ch != 'e') return false; break; case 2 : if (ch != 't') return false; break; case 3 : if (ch != 'u') return false; break; case 4 : if (ch != 'r') return false; break; case 5 : if (ch != 'n') return false; break; case 6 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case ';' : case '[' : case '{' : case '\"' : case '\'' : return true; default : return false; } } } return false; }; FP.test_switch = function(startPosition, offset) { for (var i = 0; i < 6 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 's') return false; break; case 1 : if (ch != 'w') return false; break; case 2 : if (ch != 'i') return false; break; case 3 : if (ch != 't') return false; break; case 4 : if (ch != 'c') return false; break; case 5 : if (ch != 'h') return false; break; case 6 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_this = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 't') return false; break; case 1 : if (ch != 'h') return false; break; case 2 : if (ch != 'i') return false; break; case 3 : if (ch != 's') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '.' : case ';' : case '(' : return true; default : return false; } } } return false; }; FP.test_throw = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 't') return false; break; case 1 : if (ch != 'h') return false; break; case 2 : if (ch != 'r') return false; break; case 3 : if (ch != 'o') return false; break; case 3 : if (ch != 'w') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case '[' : case '{' : return true; default : return false; } } } return false; }; FP.test_true = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 't') return false; break; case 1 : if (ch != 'r') return false; break; case 2 : if (ch != 'u') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_try = function(startPosition, offset) { for (var i = 0; i < 3 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 't') return false; break; case 1 : if (ch != 'r') return false; break; case 2 : if (ch != 'y') return false; break; case 3 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '{' : return true; default : return false; } } } return false; }; FP.test_typeof = function(startPosition, offset) { for (var i = 0; i < 6 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 't') return false; break; case 1 : if (ch != 'y') return false; break; case 2 : if (ch != 'p') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : if (ch != 'o') return false; break; case 5 : if (ch != 'f') return false; break; case 6 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : case '[' : case '{' : case '\"' : case '\'' : return true; default : return false; } } } return false; }; FP.test_undefined = function(startPosition, offset) { for (var i = 0; i < 9 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'u') return false; break; case 1 : if (ch != 'n') return false; break; case 2 : if (ch != 'd') return false; break; case 3 : if (ch != 'e') return false; break; case 4 : if (ch != 'f') return false; break; case 5 : if (ch != 'i') return false; break; case 6 : if (ch != 'n') return false; break; case 7 : if (ch != 'e') return false; break; case 8 : if (ch != 'd') return false; break; case 9 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case ';' : return true; default : return false; } } } return false; }; FP.test_var = function(startPosition, offset) { for (var i = 0; i < 3 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'v') return false; break; case 1 : if (ch != 'a') return false; break; case 2 : if (ch != 'r') return false; break; case 3 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : return true; default : return false; } } } return false; }; FP.test_void = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'v') return false; break; case 1 : if (ch != 'o') return false; break; case 2 : if (ch != 'i') return false; break; case 3 : if (ch != 'd') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_while = function(startPosition, offset) { for (var i = 0; i < 5 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'w') return false; break; case 1 : if (ch != 'h') return false; break; case 2 : if (ch != 'i') return false; break; case 3 : if (ch != 'l') return false; break; case 4 : if (ch != 'e') return false; break; case 5 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; FP.test_with = function(startPosition, offset) { for (var i = 0; i < 4 + 1; i++) { var j = i + startPosition; if (j >= this.eofPosition) return false; var ch = this.source[j]; switch (i) { case 0 : if (ch != 'w') return false; break; case 1 : if (ch != 'i') return false; break; case 2 : if (ch != 't') return false; break; case 3 : if (ch != 'h') return false; break; case 4 : switch (ch) { case ' ' : case '\t' : case '\n' : case '\r' : case '(' : return true; default : return false; } } } return false; }; } class__KeywordScanner__(window);