From 8f914cc2d987f71e9eac4c0d426a6d6d7a3ed79c Mon Sep 17 00:00:00 2001 From: Aleksey Chichenkov Date: Wed, 30 Jan 2019 18:03:10 +0300 Subject: [PATCH] remove dependencies --- README.md | 8 +- build-example.sh | 2 - build.sh | 2 - example/test_lexer.js | 4066 ++++++++++++++++++++--------------------- libs/args-parser.js | 41 + libs/js-beautifier.js | 1179 ++++++++++++ main.js | 13 +- package.json | 5 +- test.js | 2 +- 9 files changed, 3266 insertions(+), 2052 deletions(-) create mode 100644 libs/args-parser.js create mode 100644 libs/js-beautifier.js diff --git a/README.md b/README.md index 30b204a..3ec5c7c 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ ## Compile lemon-js ```bash gcc -o ./lemon-src/lemon-js -O2 ./lemon-src/lemon-js.c -npm install -# or ./build.sh ``` @@ -89,4 +87,8 @@ See lemon.html for additional documentation. Used re2js lexer from: [http://git.macaw.me:3000/chichenkov/re2-js-generator](http://git.macaw.me:3000/chichenkov/re2-js-generator) ## Original project -See https://github.com/sormy/lemon-js \ No newline at end of file +See https://github.com/sormy/lemon-js + +## Links + - Used js-beautify-node from: [https://github.com/rwaldron/js-beautify-node](https://github.com/rwaldron/js-beautify-node) + - Used args-parser from: [https://www.npmjs.com/package/args-parser](https://www.npmjs.com/package/args-parser) \ No newline at end of file diff --git a/build-example.sh b/build-example.sh index b27864a..86efb4d 100755 --- a/build-example.sh +++ b/build-example.sh @@ -2,8 +2,6 @@ gcc -o ./lemon-src/lemon-js -O2 ./lemon-src/lemon-js.c -npm install - cat config.example > config.js node main.js \ No newline at end of file diff --git a/build.sh b/build.sh index ad991a0..fe1ea79 100755 --- a/build.sh +++ b/build.sh @@ -2,6 +2,4 @@ gcc -o ./lemon-src/lemon-js -O2 ./lemon-src/lemon-js.c -npm install - cat config.template > config.js \ No newline at end of file diff --git a/example/test_lexer.js b/example/test_lexer.js index 523b729..46a4ee9 100644 --- a/example/test_lexer.js +++ b/example/test_lexer.js @@ -1,44 +1,17 @@ -/* Generated by re2c 1.0.3 on Wed Jan 30 13:09:24 2019 */ -var types = [ - "SLASH", - "LSB", - "RSB", - "LCB", - "RCB", - "COLON", - "COMMA", - "DOT", - "REM", - "GT", - "GTE", - "LT", - "LTE", - "EQ", - "NEQ", - "LIKE", - "NLIKE", - "AND", - "OR", - "NOT", - "ADDRESS", - "OID", - "OID_LITERAL", - "TIME", - "TIMEDIFF", - "INTEGER_LITERAL", - "FLOAT_LITERAL", - "BOOL_LITERAL", - "ID" -]; +/* Generated by re2c 1.0.3 on Wed Jan 30 16:51:51 2019 */ +var types = ["SLASH", "LSB", "RSB", "LCB", "RCB", "COLON", "COMMA", "DOT", "REM", "GT", "GTE", "LT", "LTE", "EQ", "NEQ", "LIKE", "NLIKE", "AND", "OR", "NOT", "ADDRESS", "OID", "OID_LITERAL", "TIME", "TIMEDIFF", "INTEGER_LITERAL", "FLOAT_LITERAL", "BOOL_LITERAL", "ID"]; var errors = { - "-2": "not found close quote or singleQuote", + "-2": "end of search", "-1": "not found any lexemes or errors or anything else", "0": "success", - "1": "found unknown symbol" + "1": "found unknown symbol", + "2": "not found close quote or singleQuote", + "3": "Unexpected symbol in oid structure", + "4": "Not found close bracket for Oid", }; -var Test_lexer = function(_string) { +var Lexer = function (_string) { this._last_found_lexeme = { error: -1 }; @@ -53,10 +26,10 @@ var Test_lexer = function(_string) { this._yy_accept = 0; }; -Test_lexer.prototype = { +Lexer.prototype = { types: types, errors: errors, - _notFoundCloseQuote: function() { + _notFoundCloseQuote: function () { this._error = true; this._last_found_lexeme = { error: 2, @@ -66,7 +39,7 @@ Test_lexer.prototype = { console.log(print_f("Not found close quote start: %s", this._yy_cursor)); }, - _unknownSymbol: function() { + _unknownSymbol: function () { this._error = true; this._last_found_lexeme = { error: 1, @@ -76,7 +49,7 @@ Test_lexer.prototype = { console.log(print_f("Found unknown symbol on position: %s", this._yy_cursor)); }, - _oidUnexpectedSymbol: function() { + _oidUnexpectedSymbol: function () { this._error = true; this._last_found_lexeme = { error: 3, @@ -86,7 +59,7 @@ Test_lexer.prototype = { console.log(print_f("Found unknown symbol in Oid on position: %s", this._yy_cursor)); }, - _oidNotFoundCloseBracket: function() { + _oidNotFoundCloseBracket: function () { this._error = true; this._last_found_lexeme = { error: 4, @@ -96,7 +69,7 @@ Test_lexer.prototype = { console.log(print_f("Not found close bracket for Oid")); }, - _foundLexeme: function(_lexeme) { + _foundLexeme: function (_lexeme) { console.log(print_f("found lex: %s; start: %s; end: %s; result => %s", _lexeme, this._yy_lex_start, this._yy_cursor, this._string.substring(this._yy_lex_start, this._yy_cursor))); this._last_found_lexeme = { error: 0, @@ -106,7 +79,7 @@ Test_lexer.prototype = { end: this._yy_cursor }; }, - _foundOidLexeme: function(_lexeme, _lsb, _rsb) { + _foundOidLexeme: function (_lexeme, _lsb, _rsb) { console.log(print_f("found lex: %s; start: %s; end: %s; result => %s", _lexeme, this._yy_lex_start, this._yy_cursor, this._string.substring(this._yy_lex_start, this._yy_cursor))); this._last_found_lexeme = { error: 0, @@ -118,45 +91,45 @@ Test_lexer.prototype = { rsb: _rsb }; }, - _endOfString: function() { + _endOfString: function () { console.log(print_f("search end\n")); this._end = true; this._last_found_lexeme = { error: -2 }; }, - _searchString: function() { + _searchString: function () { var _quote = this._string[this._yy_cursor - 1]; var found_back_slash = false; while (this._yy_cursor < this._string.length) { this._yy_char = this._string[this._yy_cursor]; if (_quote == '"') { switch (this._yy_char) { - case "\\": - found_back_slash = true; - break; - case '"': - if (!found_back_slash) { - this._yy_cursor++; - this._foundLexeme("STRING_LITERAL"); - return; - } - found_back_slash = false; - break; + case "\\": + found_back_slash = true; + break; + case '"': + if (!found_back_slash) { + this._yy_cursor++; + this._foundLexeme("STRING_LITERAL"); + return; + } + found_back_slash = false; + break; } } else if (_quote == "'") { switch (this._yy_char) { - case "\\": - found_back_slash = true; - break; - case "'": - if (!found_back_slash) { - this._yy_cursor++; - this._foundLexeme("STRING_LITERAL"); - return; - } - found_back_slash = false; - break; + case "\\": + found_back_slash = true; + break; + case "'": + if (!found_back_slash) { + this._yy_cursor++; + this._foundLexeme("STRING_LITERAL"); + return; + } + found_back_slash = false; + break; } } this._yy_cursor++; @@ -164,2001 +137,2017 @@ Test_lexer.prototype = { this._notFoundCloseQuote(); }, - _searchOid: function() { + _searchOid: function () { var lsb, rsb; var state = 0; while (this._yy_cursor < this._string.length) { switch (state) { - case 0: - this._yy_char = this._string[this._yy_cursor]; - (function() { - switch (this._yy_char) { - case " ": - state = 0; - this._yy_cursor++; - break; - case "[": - lsb = { - start: this._yy_cursor, - end: this._yy_cursor + 1 - }; - state = 1; - break; - default: - state = 5; - } - }.bind(this))(); - break; - case 1: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case " ": - state = 1; - break; - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - state = 2; - break; - case "]": - state = 4; - break; - default: - state = 5; - } - }.bind(this))(); - break; - case 2: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case " ": - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - state = 2; - break; - case ".": - state = 3; - break; - case "]": - state = 4; - break; - default: - state = 5; - } - }.bind(this))(); - break; - case 3: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case " ": - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - state = 2; - break; - default: - state = 5; - } - }.bind(this))(); - break; - case 4: - rsb = { - start: this._yy_cursor, - end: this._yy_cursor + 1 - }; - ++this._yy_cursor; - this._foundOidLexeme("OID_LITERAL", lsb, rsb); - return; - case 5: - this._oidUnexpectedSymbol(); - return; + case 0: + this._yy_char = this._string[this._yy_cursor]; + (function () { + switch (this._yy_char) { + case " ": + state = 0; + this._yy_cursor++; + break; + case "[": + lsb = { + start: this._yy_cursor, + end: this._yy_cursor + 1 + }; + state = 1; + break; + default: + state = 5; + } + }.bind(this))(); + break; + case 1: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case " ": + state = 1; + break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + state = 2; + break; + case "]": + state = 4; + break; + default: + state = 5; + } + }.bind(this))(); + break; + case 2: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case " ": + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + state = 2; + break; + case ".": + state = 3; + break; + case "]": + state = 4; + break; + default: + state = 5; + } + }.bind(this))(); + break; + case 3: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case " ": + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + state = 2; + break; + default: + state = 5; + } + }.bind(this))(); + break; + case 4: + rsb = { + start: this._yy_cursor, + end: this._yy_cursor + 1 + }; + ++this._yy_cursor; + this._foundOidLexeme("OID_LITERAL", lsb, rsb); + return; + case 5: + this._oidUnexpectedSymbol(); + return; } } this._oidNotFoundCloseBracket(); }, - _set_next: function() { + _set_next: function () { this._yy_accept = 0; this._state = 1; this._yy_lex_start = this._yy_cursor; this._yy_marker = this._yy_cursor; }, - next: function() { + next: function () { if (this._end || this._error) return null; this.search(); return this.token(); }, - token: function() { + token: function () { return this._last_found_lexeme; }, - search: function() { + search: function () { if (this._end) return false; while (true) { switch (this._state) { + case 1: + this._yy_char = this._string[this._yy_cursor]; + (function () { + switch (this._yy_char) { + case undefined: + this._state = 2; + break; + case '\t': + case '\n': + case '\r': + case ' ': + this._state = 6; + break; + case '!': + this._state = 8; + break; + case '"': + case '\'': + this._state = 9; + break; + case '%': + this._state = 11; + break; + case '(': + this._state = 13; + break; + case ')': + this._state = 15; + break; + case ',': + this._state = 17; + break; + case '-': + this._state = 19; + break; + case '.': + this._state = 20; + break; + case '/': + this._state = 22; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 24; + break; + case ':': + this._state = 27; + break; + case '<': + this._state = 29; + break; + case '=': + this._state = 31; + break; + case '>': + this._state = 32; + break; + case 'A': + this._state = 34; + break; + case 'B': + case 'C': + case 'D': + case 'E': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'b': + case 'c': + case 'd': + case 'e': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + case 'F': + case 'f': + this._state = 38; + break; + case 'L': + case 'l': + this._state = 39; + break; + case 'N': + case 'n': + this._state = 40; + break; + case 'O': + this._state = 41; + break; + case 'T': + this._state = 42; + break; + case '[': + this._state = 43; + break; + case ']': + this._state = 45; + break; + case 'a': + this._state = 47; + break; + case 'o': + this._state = 48; + break; + case 't': + this._state = 49; + break; + default: + this._state = 4; + break; + } + }.bind(this))(); + break; + case 2: + ++this._yy_cursor; { + this._endOfString(); + return; + } + case 4: + ++this._yy_cursor; + case 5: + { + this._unknownSymbol(); + this._set_next(); + return; + } + case 6: + ++this._yy_cursor; { + this._set_next(); + break; + } + case 8: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '=': + this._state = 50; + break; + default: + this._state = 5; + break; + } + }.bind(this))(); + break; + case 9: + ++this._yy_cursor; { + this._state = 100000000; + break; + } + case 11: + ++this._yy_cursor; { + this._foundLexeme("REM"); + this._set_next(); + return; + } + case 13: + ++this._yy_cursor; { + this._foundLexeme("LCB"); + this._set_next(); + return; + } + case 15: + ++this._yy_cursor; { + this._foundLexeme("RCB"); + this._set_next(); + return; + } + case 17: + ++this._yy_cursor; { + this._foundLexeme("COMMA"); + this._set_next(); + return; + } + case 19: + this._yy_accept = 0; + this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; + (function () { + switch (this._yy_char) { + case '.': + this._state = 52; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 24; + break; + default: + this._state = 5; + break; + } + }.bind(this))(); + break; + case 20: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 54; + break; + default: + this._state = 21; + break; + } + }.bind(this))(); + break; + case 21: + { + this._foundLexeme("DOT"); + this._set_next(); + return; + } + case 22: + ++this._yy_cursor; { + this._foundLexeme("SLASH"); + this._set_next(); + return; + } + case 24: + this._yy_accept = 1; + this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; + (function () { + switch (this._yy_char) { + case '.': + this._state = 52; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 24; + break; + default: + this._state = 26; + break; + } + }.bind(this))(); + break; + case 26: + { + this._foundLexeme("INTEGER_LITERAL"); + this._set_next(); + return; + } + case 27: + ++this._yy_cursor; { + this._foundLexeme("COLON"); + this._set_next(); + return; + } + case 29: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '=': + this._state = 57; + break; + default: + this._state = 30; + break; + } + }.bind(this))(); + break; + case 30: + { + this._foundLexeme("LT"); + this._set_next(); + return; + } + case 31: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '=': + this._state = 59; + break; + default: + this._state = 5; + break; + } + }.bind(this))(); + break; + case 32: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '=': + this._state = 61; + break; + default: + this._state = 33; + break; + } + }.bind(this))(); + break; + case 33: + { + this._foundLexeme("GT"); + this._set_next(); + return; + } + case 34: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'N': + case 'n': + this._state = 63; + break; + case 'd': + this._state = 64; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 35: + { + this._foundLexeme("ID"); + this._set_next(); + return; + } + case 36: + this._yy_char = this._string[++this._yy_cursor]; + case 37: + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 35; + break; + } + }.bind(this))(); + break; + case 38: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'A': + case 'a': + this._state = 65; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 39: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'I': + case 'i': + this._state = 66; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 40: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'L': + case 'l': + this._state = 67; + break; + case 'O': + case 'o': + this._state = 68; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 41: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'R': + case 'r': + this._state = 69; + break; + case 'i': + this._state = 71; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 42: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'R': + case 'r': + this._state = 72; + break; + case 'i': + this._state = 73; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 43: + ++this._yy_cursor; { + this._foundLexeme("LSB"); + this._set_next(); + return; + } + case 45: + ++this._yy_cursor; { + this._foundLexeme("RSB"); + this._set_next(); + return; + } + case 47: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'N': + case 'n': + this._state = 63; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 48: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'R': + case 'r': + this._state = 69; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 49: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'R': + case 'r': + this._state = 72; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 50: + ++this._yy_cursor; { + this._foundLexeme("NEQ"); + this._set_next(); + return; + } + case 52: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 54; + break; + default: + this._state = 53; + break; + } + }.bind(this))(); + break; + case 53: + this._yy_cursor = this._yy_marker; + switch (this._yy_accept) { + case 0: + this._state = 5; + break; case 1: - this._yy_char = this._string[this._yy_cursor]; - (function() { - switch (this._yy_char) { - case undefined: - this._state = 2; - break; - case '\t': - case '\n': - case '\r': - case ' ': - this._state = 6; - break; - case '!': - this._state = 8; - break; - case '"': - case '\'': - this._state = 9; - break; - case '%': - this._state = 11; - break; - case '(': - this._state = 13; - break; - case ')': - this._state = 15; - break; - case ',': - this._state = 17; - break; - case '-': - this._state = 19; - break; - case '.': - this._state = 20; - break; - case '/': - this._state = 22; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 24; - break; - case ':': - this._state = 27; - break; - case '<': - this._state = 29; - break; - case '=': - this._state = 31; - break; - case '>': - this._state = 32; - break; - case 'A': - this._state = 34; - break; - case 'B': - case 'C': - case 'D': - case 'E': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'M': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'b': - case 'c': - case 'd': - case 'e': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'm': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - case 'F': - case 'f': - this._state = 38; - break; - case 'L': - case 'l': - this._state = 39; - break; - case 'N': - case 'n': - this._state = 40; - break; - case 'O': - this._state = 41; - break; - case 'T': - this._state = 42; - break; - case '[': - this._state = 43; - break; - case ']': - this._state = 45; - break; - case 'a': - this._state = 47; - break; - case 'o': - this._state = 48; - break; - case 't': - this._state = 49; - break; - default: - this._state = 4; - break; - } - }.bind(this))(); + this._state = 26; break; - case 2: - ++this._yy_cursor; { - this._endOfString(); - return; - } - case 4: - ++this._yy_cursor; - case 5: - { - this._unknownSymbol();this._set_next(); - return; - } - case 6: - ++this._yy_cursor; { - this._set_next(); + default: + this._state = 56; + break; + } + case 54: + this._yy_accept = 2; + this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 54; + break; + case 'e': + this._state = 74; + break; + default: + this._state = 56; break; } - case 8: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '=': - this._state = 50; - break; - default: - this._state = 5; - break; - } - }.bind(this))(); - break; - case 9: - ++this._yy_cursor; { - this._state = 100000000; - break; - } - case 11: - ++this._yy_cursor; { - this._foundLexeme("REM"); - this._set_next(); - return; - } - case 13: - ++this._yy_cursor; { - this._foundLexeme("LCB"); - this._set_next(); - return; - } - case 15: - ++this._yy_cursor; { - this._foundLexeme("RCB"); - this._set_next(); - return; - } - case 17: - ++this._yy_cursor; { - this._foundLexeme("COMMA"); - this._set_next(); - return; - } - case 19: - this._yy_accept = 0; - this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; - (function() { - switch (this._yy_char) { - case '.': - this._state = 52; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 24; - break; - default: - this._state = 5; - break; - } - }.bind(this))(); - break; - case 20: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 54; - break; - default: - this._state = 21; - break; - } - }.bind(this))(); - break; - case 21: - { - this._foundLexeme("DOT");this._set_next(); - return; - } - case 22: - ++this._yy_cursor; { - this._foundLexeme("SLASH"); - this._set_next(); - return; - } - case 24: - this._yy_accept = 1; - this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; - (function() { - switch (this._yy_char) { - case '.': - this._state = 52; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 24; - break; - default: - this._state = 26; - break; - } - }.bind(this))(); - break; - case 26: - { - this._foundLexeme("INTEGER_LITERAL");this._set_next(); - return; - } - case 27: - ++this._yy_cursor; { - this._foundLexeme("COLON"); - this._set_next(); - return; - } - case 29: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '=': - this._state = 57; - break; - default: - this._state = 30; - break; - } - }.bind(this))(); - break; - case 30: - { - this._foundLexeme("LT");this._set_next(); - return; - } - case 31: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '=': - this._state = 59; - break; - default: - this._state = 5; - break; - } - }.bind(this))(); - break; - case 32: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '=': - this._state = 61; - break; - default: - this._state = 33; - break; - } - }.bind(this))(); - break; - case 33: - { - this._foundLexeme("GT");this._set_next(); - return; - } - case 34: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'N': - case 'n': - this._state = 63; - break; - case 'd': - this._state = 64; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 35: - { - this._foundLexeme("ID");this._set_next(); - return; - } - case 36: - this._yy_char = this._string[++this._yy_cursor]; - case 37: - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 35; - break; - } - }.bind(this))(); - break; - case 38: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'A': - case 'a': - this._state = 65; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 39: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'I': - case 'i': - this._state = 66; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 40: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'L': - case 'l': - this._state = 67; - break; - case 'O': - case 'o': - this._state = 68; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 41: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'R': - case 'r': - this._state = 69; - break; - case 'i': - this._state = 71; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 42: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'R': - case 'r': - this._state = 72; - break; - case 'i': - this._state = 73; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 43: - ++this._yy_cursor; { - this._foundLexeme("LSB"); - this._set_next(); - return; - } - case 45: - ++this._yy_cursor; { - this._foundLexeme("RSB"); - this._set_next(); - return; - } - case 47: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'N': - case 'n': - this._state = 63; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 48: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'R': - case 'r': - this._state = 69; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 49: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'R': - case 'r': - this._state = 72; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 50: - ++this._yy_cursor; { - this._foundLexeme("NEQ"); - this._set_next(); - return; - } - case 52: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 54; - break; - default: - this._state = 53; - break; - } - }.bind(this))(); - break; - case 53: - this._yy_cursor = this._yy_marker; - switch (this._yy_accept) { - case 0: - this._state = 5; - break; - case 1: - this._state = 26; - break; - default: - this._state = 56; - break; - } - case 54: - this._yy_accept = 2; - this._yy_char = this._string[(this._yy_marker = ++this._yy_cursor)]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 54; - break; - case 'e': - this._state = 74; - break; - default: - this._state = 56; - break; - } - }.bind(this))(); - break; - case 56: - { - this._foundLexeme("FLOAT_LITERAL");this._set_next(); - return; - } - case 57: - ++this._yy_cursor; { - this._foundLexeme("LTE"); - this._set_next(); - return; - } - case 59: - ++this._yy_cursor; { - this._foundLexeme("EQ"); - this._set_next(); - return; - } - case 61: - ++this._yy_cursor; { - this._foundLexeme("GTE"); - this._set_next(); - return; - } - case 63: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'D': - case 'd': - this._state = 75; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 64: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'd': - this._state = 77; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 65: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'L': - case 'l': - this._state = 78; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 66: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'K': - case 'k': - this._state = 79; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 67: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'I': - case 'i': - this._state = 80; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 68: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'T': - case 't': - this._state = 81; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 69: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 70; - break; - } - }.bind(this))(); - break; - case 70: - { - this._foundLexeme("OR");this._set_next(); - return; - } - case 71: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'd': - this._state = 83; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 72: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'U': - case 'u': - this._state = 85; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 73: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'm': - this._state = 86; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 74: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '-': - this._state = 87; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 88; - break; - default: - this._state = 53; - break; - } - }.bind(this))(); - break; - case 75: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 76; - break; - } - }.bind(this))(); - break; - case 76: - { - this._foundLexeme("AND");this._set_next(); - return; - } - case 77: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'r': - this._state = 90; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 78: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'S': - case 's': - this._state = 85; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 79: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'E': - case 'e': - this._state = 91; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 80: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'K': - case 'k': - this._state = 93; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 81: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 82; - break; - } - }.bind(this))(); - break; - case 82: - { - this._foundLexeme("NOT");this._set_next(); - return; - } - case 83: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 84; - break; - } - }.bind(this))(); - break; - case 84: - { - this._state = 100000001; - break; - } - case 85: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'E': - case 'e': - this._state = 94; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 86: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'e': - this._state = 96; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 87: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 88; - break; - default: - this._state = 53; - break; - } - }.bind(this))(); - break; - case 88: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - this._state = 88; - break; - default: - this._state = 56; - break; - } - }.bind(this))(); - break; - case 90: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'e': - this._state = 98; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 91: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 92; - break; - } - }.bind(this))(); - break; - case 92: - { - this._foundLexeme("LIKE");this._set_next(); - return; - } - case 93: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'E': - case 'e': - this._state = 99; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 94: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 95; - break; - } - }.bind(this))(); - break; - case 95: - { - this._foundLexeme("BOOL_LITERAL");this._set_next(); - return; - } - case 96: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - case 'D': - this._state = 101; - break; - default: - this._state = 97; - break; - } - }.bind(this))(); - break; - case 97: - { - this._foundLexeme("TIME");this._set_next(); - return; - } - case 98: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 's': - this._state = 102; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 99: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 100; - break; - } - }.bind(this))(); - break; - case 100: - { - this._foundLexeme("NLIKE");this._set_next(); - return; - } - case 101: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'i': - this._state = 103; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 102: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 's': - this._state = 104; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 103: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'f': - this._state = 106; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 104: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 105; - break; - } - }.bind(this))(); - break; - case 105: - { - this._foundLexeme("ADDRESS");this._set_next(); - return; - } - case 106: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case 'f': - this._state = 107; - break; - default: - this._state = 37; - break; - } - }.bind(this))(); - break; - case 107: - this._yy_char = this._string[++this._yy_cursor]; - (function() { - switch (this._yy_char) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - this._state = 36; - break; - default: - this._state = 108; - break; - } - }.bind(this))(); - break; - case 108: - { - this._foundLexeme("TIMEDIFF");this._set_next(); - return; - } - - case 100000000: - this._searchString(); + }.bind(this))(); + break; + case 56: + { + this._foundLexeme("FLOAT_LITERAL"); this._set_next(); return; - - - case 100000001: - this._searchOid(); + } + case 57: + ++this._yy_cursor; { + this._foundLexeme("LTE"); this._set_next(); return; + } + case 59: + ++this._yy_cursor; { + this._foundLexeme("EQ"); + this._set_next(); + return; + } + case 61: + ++this._yy_cursor; { + this._foundLexeme("GTE"); + this._set_next(); + return; + } + case 63: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'D': + case 'd': + this._state = 75; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 64: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'd': + this._state = 77; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 65: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'L': + case 'l': + this._state = 78; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 66: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'K': + case 'k': + this._state = 79; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 67: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'I': + case 'i': + this._state = 80; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 68: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'T': + case 't': + this._state = 81; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 69: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 70; + break; + } + }.bind(this))(); + break; + case 70: + { + this._foundLexeme("OR"); + this._set_next(); + return; + } + case 71: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'd': + this._state = 83; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 72: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'U': + case 'u': + this._state = 85; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 73: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'm': + this._state = 86; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 74: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '-': + this._state = 87; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 88; + break; + default: + this._state = 53; + break; + } + }.bind(this))(); + break; + case 75: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 76; + break; + } + }.bind(this))(); + break; + case 76: + { + this._foundLexeme("AND"); + this._set_next(); + return; + } + case 77: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'r': + this._state = 90; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 78: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'S': + case 's': + this._state = 85; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 79: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'E': + case 'e': + this._state = 91; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 80: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'K': + case 'k': + this._state = 93; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 81: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 82; + break; + } + }.bind(this))(); + break; + case 82: + { + this._foundLexeme("NOT"); + this._set_next(); + return; + } + case 83: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 84; + break; + } + }.bind(this))(); + break; + case 84: + { + this._state = 100000001; + break; + } + case 85: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'E': + case 'e': + this._state = 94; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 86: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'e': + this._state = 96; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 87: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 88; + break; + default: + this._state = 53; + break; + } + }.bind(this))(); + break; + case 88: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + this._state = 88; + break; + default: + this._state = 56; + break; + } + }.bind(this))(); + break; + case 90: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'e': + this._state = 98; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 91: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 92; + break; + } + }.bind(this))(); + break; + case 92: + { + this._foundLexeme("LIKE"); + this._set_next(); + return; + } + case 93: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'E': + case 'e': + this._state = 99; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 94: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 95; + break; + } + }.bind(this))(); + break; + case 95: + { + this._foundLexeme("BOOL_LITERAL"); + this._set_next(); + return; + } + case 96: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + case 'D': + this._state = 101; + break; + default: + this._state = 97; + break; + } + }.bind(this))(); + break; + case 97: + { + this._foundLexeme("TIME"); + this._set_next(); + return; + } + case 98: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 's': + this._state = 102; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 99: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 100; + break; + } + }.bind(this))(); + break; + case 100: + { + this._foundLexeme("NLIKE"); + this._set_next(); + return; + } + case 101: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'i': + this._state = 103; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 102: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 's': + this._state = 104; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 103: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'f': + this._state = 106; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 104: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 105; + break; + } + }.bind(this))(); + break; + case 105: + { + this._foundLexeme("ADDRESS"); + this._set_next(); + return; + } + case 106: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case 'f': + this._state = 107; + break; + default: + this._state = 37; + break; + } + }.bind(this))(); + break; + case 107: + this._yy_char = this._string[++this._yy_cursor]; + (function () { + switch (this._yy_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + this._state = 36; + break; + default: + this._state = 108; + break; + } + }.bind(this))(); + break; + case 108: + { + this._foundLexeme("TIMEDIFF"); + this._set_next(); + return; + } + + case 100000000: + this._searchString(); + this._set_next(); + return; + + + case 100000001: + this._searchOid(); + this._set_next(); + return; } } @@ -2169,7 +2158,7 @@ Test_lexer.prototype = { -var print_f = function() { +var print_f = function () { var r_str = ""; var next = arguments[0]; @@ -2186,15 +2175,15 @@ var print_f = function() { if (arg !== undefined) { switch (macro) { - case "s": - r_str += arg.toString(); - break; - case "i": - r_str += parseInt(arg); - break; - case "f": - r_str += parseFloat(arg); - break; + case "s": + r_str += arg.toString(); + break; + case "i": + r_str += parseInt(arg); + break; + case "f": + r_str += parseFloat(arg); + break; } } else { r_str += "%" + macro; @@ -2206,4 +2195,7 @@ var print_f = function() { return r_str; }; -module.exports = Test_lexer \ No newline at end of file + + +(new Lexer("[")).search(); +module.exports = Lexer \ No newline at end of file diff --git a/libs/args-parser.js b/libs/args-parser.js new file mode 100644 index 0000000..d3886db --- /dev/null +++ b/libs/args-parser.js @@ -0,0 +1,41 @@ +/** + * Created by Aleksey Chichenkov on 1/30/19. + */ + +function Parse (argv) { + // Removing node/bin and called script name + argv = argv.slice(2); + + // Returned object + var args = {}; + + var argName, argValue; + + // For each argument + argv.forEach(function (arg, index) { + // Seperate argument, for a key/value return + arg = arg.split('='); + + // Retrieve the argument name + argName = arg[0]; + + // Remove "--" or "-" + if (argName.indexOf('-') === 0) { + argName = argName.slice(argName.slice(0, 2).lastIndexOf('-') + 1); + } + + // Associate defined value or initialize it to "true" state + argValue = (arg.length === 2) + ? parseFloat(arg[1]).toString() === arg[1] // check if argument is valid number + ? +arg[1] + : arg[1] + : true; + + // Finally add the argument to the args set + args[argName] = argValue; + }); + + return args; +} + +module.exports = Parse; diff --git a/libs/js-beautifier.js b/libs/js-beautifier.js new file mode 100644 index 0000000..5907477 --- /dev/null +++ b/libs/js-beautifier.js @@ -0,0 +1,1179 @@ +/* + JS Beautifier +--------------- + Written by Einar Lielmanis, + http://jsbeautifier.org/ + Originally converted to javascript by Vital, + You are free to use this in any way you want, in case you find this useful or working for you. + Usage: + js_beautify(js_source_text); + js_beautify(js_source_text, options); + The options are: + indent_size (default 4) — indentation size, + indent_char (default space) — character to indent with, + preserve_newlines (default true) — whether existing line breaks should be preserved, + indent_level (default 0) — initial indentation level, you probably won't need this ever, + space_after_anon_function (default false) — if true, then space is added between "function ()" + (jslint is happy about this); if false, then the common "function()" output is used. + braces_on_own_line (default false) - ANSI / Allman brace style, each opening/closing brace gets its own line. + e.g + js_beautify(js_source_text, {indent_size: 1, indent_char: '\t'}); +*/ +function js_beautify(js_source_text, options) { + + options = options ? options : {}; + + var input, + output, + token_text, + last_type, + last_text, + last_last_text, + last_word, + flags, + flag_store, + indent_string, + whitespace, + wordchar, + punct, + parser_pos, + line_starters, + digits, + prefix, + token_type, + do_block_just_closed, + wanted_newline, + just_added_newline = false, + n_newlines, + opt_braces_on_own_line = options.braces_on_own_line ? options.braces_on_own_line : false, + opt_indent_size = options.indent_size ? options.indent_size : 4, + opt_indent_char = options.indent_char ? options.indent_char : ' ', + opt_preserve_newlines = typeof options.preserve_newlines === 'undefined' ? true : options.preserve_newlines, + opt_indent_level = options.indent_level ? options.indent_level : 0, // starting indentation + opt_space_after_anon_function = options.space_after_anon_function === 'undefined' ? false : options.space_after_anon_function, + opt_keep_array_indentation = typeof options.keep_array_indentation === 'undefined' ? false : options.keep_array_indentation, + input_length = js_source_text.length, + space_before = true, + space_after = true, + t, + i, + lines; + + + function trim_output() { + while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string)) { + output.pop(); + } + } + + + function is_array(mode) { + return mode === '[EXPRESSION]' || mode === '[INDENTED-EXPRESSION]'; + } + + + function print_newline(ignore_repeated) { + flags.eat_next_space = false; + if (opt_keep_array_indentation && is_array(flags.mode)) { + return; + } + + ignore_repeated = typeof ignore_repeated === 'undefined' ? true : ignore_repeated; + + flags.if_line = false; + trim_output(); + + if (!output.length) { + return; // no newline on start of file + } + + if (output[output.length - 1] !== "\n" || !ignore_repeated) { + just_added_newline = true; + output.push("\n"); + } + + for (var i = 0; i < flags.indentation_level; i += 1) { + output.push(indent_string); + } + + if (flags.var_line && flags.var_line_reindented) { + if (opt_indent_char === ' ') { + output.push(' '); // var_line always pushes 4 spaces, so that the variables would be one under another + } + else { + output.push(indent_string); // skip space-stuffing, if indenting with a tab + } + } + } + + + function print_single_space() { + var last_output = ' '; + + if (flags.eat_next_space) { + flags.eat_next_space = false; + return; + } + + if (output.length) { + last_output = output[output.length - 1]; + } + + if (last_output !== ' ' && last_output !== '\n' && last_output !== indent_string) { // prevent occassional duplicate space + output.push(' '); + } + } + + + function print_token() { + just_added_newline = false; + flags.eat_next_space = false; + output.push(token_text); + } + + + function indent() { + flags.indentation_level += 1; + } + + + function remove_indent() { + if (output.length && output[output.length - 1] === indent_string) { + output.pop(); + } + } + + + function set_mode(mode) { + if (flags) { + flag_store.push(flags); + } + + flags = { + previous_mode: flags ? flags.mode : 'BLOCK', + mode: mode, + var_line: false, + var_line_tainted: false, + var_line_reindented: false, + in_html_comment: false, + if_line: false, + in_case: false, + eat_next_space: false, + indentation_baseline: -1, + indentation_level: (flags ? flags.indentation_level + ((flags.var_line && flags.var_line_reindented) ? 1 : 0) : opt_indent_level) + }; + } + + + function is_expression(mode) { + return mode === '[EXPRESSION]' || mode === '[INDENTED-EXPRESSION]' || mode === '(EXPRESSION)'; + } + + + function restore_mode() { + do_block_just_closed = flags.mode === 'DO_BLOCK'; + if (flag_store.length > 0) { + flags = flag_store.pop(); + } + } + + + function in_array(what, arr) { + for (var i = 0; i < arr.length; i += 1) { + if (arr[i] === what) { + return true; + } + } + return false; + } + + + // Walk backwards from the colon to find a '?' (colon is part of a ternary op) + // or a '{' (colon is part of a class literal). Along the way, keep track of + // the blocks and expressions we pass so we only trigger on those chars in our + // own level, and keep track of the colons so we only trigger on the matching '?'. + + function is_ternary_op() { + var level = 0, + colon_count = 0, + i; + + for (i = output.length - 1; i >= 0; i -= 1) { + switch (output[i]) { + case ':': + if (level === 0) { + colon_count += 1; + } + break; + + case '?': + if (level === 0) { + if (colon_count === 0) { + return true; + } else { + colon_count -= 1; + } + } + break; + + case '{': + if (level === 0) { + return false; + } + level -= 1; + break; + + case '(': + case '[': + level -= 1; + break; + + case ')': + case ']': + case '}': + level += 1; + break; + } + } + } + + + function get_next_token() { + var c, + keep_whitespace = opt_keep_array_indentation && is_array(flags.mode), + whitespace_count = 0, + i, + sign, + t, + comment, + inline_comment, + sep, + esc, + resulting_string, + in_char_class, + sharp; + + n_newlines = 0; + + if (parser_pos >= input_length) { + return ['', 'TK_EOF']; + } + + wanted_newline = false; + + c = input.charAt(parser_pos); + parser_pos += 1; + + if (keep_whitespace) { + // + // slight mess to allow nice preservation of array indentation and reindent that correctly + // first time when we get to the arrays: + // var a = [ + // ....'something' + // we make note of whitespace_count = 4 into flags.indentation_baseline + // so we know that 4 whitespaces in original source match indent_level of reindented source + // + // and afterwards, when we get to + // 'something, + // .......'something else' + // we know that this should be indented to indent_level + (7 - indentation_baseline) spaces + // + + while (in_array(c, whitespace)) { + if (c === "\n") { + trim_output(); + output.push("\n"); + just_added_newline = true; + whitespace_count = 0; + } + else { + if (c === '\t') { + whitespace_count += 4; + } + else { + whitespace_count += 1; + } + } + + if (parser_pos >= input_length) { + return ['', 'TK_EOF']; + } + + c = input.charAt(parser_pos); + parser_pos += 1; + } + + if (flags.indentation_baseline === -1) { + flags.indentation_baseline = whitespace_count; + } + + if (just_added_newline) { + for (i = 0; i < flags.indentation_level + 1; i += 1) { + output.push(indent_string); + } + + if (flags.indentation_baseline !== -1) { + for (i = 0; i < whitespace_count - flags.indentation_baseline; i += 1) { + output.push(' '); + } + } + } + + } + else { + while (in_array(c, whitespace)) { + if (c === "\n") { + n_newlines += 1; + } + + if (parser_pos >= input_length) { + return ['', 'TK_EOF']; + } + + c = input.charAt(parser_pos); + parser_pos += 1; + } + + if (opt_preserve_newlines) { + if (n_newlines > 1) { + for (i = 0; i < n_newlines; i += 1) { + print_newline(i === 0); + just_added_newline = true; + } + } + } + wanted_newline = n_newlines > 0; + } + + if (in_array(c, wordchar)) { + if (parser_pos < input_length) { + while (in_array(input.charAt(parser_pos), wordchar)) { + c += input.charAt(parser_pos); + parser_pos += 1; + + if (parser_pos === input_length) { + break; + } + } + } + + // small and surprisingly unugly hack for 1E-10 representation + if (parser_pos !== input_length && c.match(/^[0-9]+[Ee]$/) && (input.charAt(parser_pos) === '-' || input.charAt(parser_pos) === '+')) { + + sign = input.charAt(parser_pos); + parser_pos += 1; + + t = get_next_token(parser_pos); + c += sign + t[0]; + + return [c, 'TK_WORD']; + } + + if (c === 'in') { // hack for 'in' operator + return [c, 'TK_OPERATOR']; + } + + if (wanted_newline && last_type !== 'TK_OPERATOR' && !flags.if_line && (opt_preserve_newlines || last_text !== 'var')) { + print_newline(); + } + + return [c, 'TK_WORD']; + } + + if (c === '(' || c === '[') { + return [c, 'TK_START_EXPR']; + } + + if (c === ')' || c === ']') { + return [c, 'TK_END_EXPR']; + } + + if (c === '{') { + return [c, 'TK_START_BLOCK']; + } + + if (c === '}') { + return [c, 'TK_END_BLOCK']; + } + + if (c === ';') { + return [c, 'TK_SEMICOLON']; + } + + if (c === '/') { + // peek for comment /* ... */ + inline_comment = true; + comment = ''; + + if (input.charAt(parser_pos) === '*') { + parser_pos += 1; + if (parser_pos < input_length) { + while (!(input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/') && parser_pos < input_length) { + c = input.charAt(parser_pos); + comment += c; + + if (c === '\x0d' || c === '\x0a') { + inline_comment = false; + } + + parser_pos += 1; + + if (parser_pos >= input_length) { + break; + } + } + } + + parser_pos += 2; + + if (inline_comment) { + return ['/*' + comment + '*/', 'TK_INLINE_COMMENT']; + } + else { + return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT']; + } + } + // peek for comment // ... + if (input.charAt(parser_pos) === '/') { + comment = c; + while (input.charAt(parser_pos) !== "\x0d" && input.charAt(parser_pos) !== "\x0a") { + comment += input.charAt(parser_pos); + parser_pos += 1; + + if (parser_pos >= input_length) { + break; + } + } + + parser_pos += 1; + + if (wanted_newline) { + print_newline(); + } + + return [comment, 'TK_COMMENT']; + } + } + + if (c === "'" || // string + c === '"' || // string + (c === '/' && ((last_type === 'TK_WORD' && in_array(last_text, ['return', 'do'])) || (last_type === 'TK_START_EXPR' || last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK' || last_type === 'TK_OPERATOR' || last_type === 'TK_EQUALS' || last_type === 'TK_EOF' || last_type === 'TK_SEMICOLON')))) { // regexp + + sep = c; + esc = false; + resulting_string = c; + + if (parser_pos < input_length) { + if (sep === '/') { + // handle regexp separately... + in_char_class = false; + + while (esc || in_char_class || input.charAt(parser_pos) !== sep) { + resulting_string += input.charAt(parser_pos); + + if (!esc) { + esc = input.charAt(parser_pos) === '\\'; + + if (input.charAt(parser_pos) === '[') { + in_char_class = true; + } + else if (input.charAt(parser_pos) === ']') { + in_char_class = false; + } + } + else { + esc = false; + } + + parser_pos += 1; + + if (parser_pos >= input_length) { + // incomplete string/rexp when end-of-file reached. + // bail out with what had been received so far. + return [resulting_string, 'TK_STRING']; + } + } + } + else { + // and handle string also separately + while (esc || input.charAt(parser_pos) !== sep) { + resulting_string += input.charAt(parser_pos); + + if (!esc) { + esc = input.charAt(parser_pos) === '\\'; + } + else { + esc = false; + } + + parser_pos += 1; + + if (parser_pos >= input_length) { + // incomplete string/rexp when end-of-file reached. + // bail out with what had been received so far. + return [resulting_string, 'TK_STRING']; + } + } + } + } + + parser_pos += 1; + resulting_string += sep; + + if (sep === '/') { + // regexps may have modifiers /regexp/MOD , so fetch those, too + while (parser_pos < input_length && in_array(input.charAt(parser_pos), wordchar)) { + resulting_string += input.charAt(parser_pos); + parser_pos += 1; + } + } + + return [resulting_string, 'TK_STRING']; + } + + if (c === '#') { + // Spidermonkey-specific sharp variables for circular references + // https://developer.mozilla.org/En/Sharp_variables_in_JavaScript + // http://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp around line 1935 + sharp = '#'; + + if (parser_pos < input_length && in_array(input.charAt(parser_pos), digits)) { + do { + c = input.charAt(parser_pos); + sharp += c; + parser_pos += 1; + } while (parser_pos < input_length && c !== '#' && c !== '='); + + if (c === '#') { + // + } + else if (input.charAt(parser_pos) === '[' && input.charAt(parser_pos + 1) === ']') { + sharp += '[]'; + parser_pos += 2; + } + else if (input.charAt(parser_pos) === '{' && input.charAt(parser_pos + 1) === '}') { + sharp += '{}'; + parser_pos += 2; + } + + return [sharp, 'TK_WORD']; + } + } + + if (c === '<' && input.substring(parser_pos - 1, parser_pos + 3) === '') { + flags.in_html_comment = false; + parser_pos += 2; + + if (wanted_newline) { + print_newline(); + } + + return ['-->', 'TK_COMMENT']; + } + + if (in_array(c, punct)) { + while (parser_pos < input_length && in_array(c + input.charAt(parser_pos), punct)) { + c += input.charAt(parser_pos); + parser_pos += 1; + if (parser_pos >= input_length) { + break; + } + } + + if (c === '=') { + return [c, 'TK_EQUALS']; + } else { + return [c, 'TK_OPERATOR']; + } + } + + return [c, 'TK_UNKNOWN']; + } + + // END get_next_token() + + + //---------------------------------- + + + indent_string = ''; + + while (opt_indent_size > 0) { + indent_string += opt_indent_char; + opt_indent_size -= 1; + } + + input = js_source_text; + last_word = ''; // last 'TK_WORD' passed + last_type = 'TK_START_EXPR'; // last token type + last_text = ''; // last token text + last_last_text = ''; // pre-last token text + output = []; + + do_block_just_closed = false; + + whitespace = "\n\r\t ".split(''); + wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split(''); + digits = '0123456789'.split(''); + punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |= ::'.split(' '); + + // words which should always start on new line. + line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(','); + + // states showing if we are currently in expression (i.e. "if" case) - 'EXPRESSION', or in usual block (like, procedure), 'BLOCK'. + // some formatting depends on that. + flag_store = []; + set_mode('BLOCK'); + + parser_pos = 0; + while (true) { + t = get_next_token(parser_pos); + token_text = t[0]; + token_type = t[1]; + if (token_type === 'TK_EOF') { + break; + } + + switch (token_type) { + + case 'TK_START_EXPR': + if (token_text === '[') { + + if (last_type === 'TK_WORD' || last_text === ')') { + // this is array index specifier, break immediately + // a[x], fn()[x] + if (in_array(last_text, line_starters)) { + print_single_space(); + } + + set_mode('(EXPRESSION)'); + print_token(); + break; + } + + if (flags.mode === '[EXPRESSION]' || flags.mode === '[INDENTED-EXPRESSION]') { + if (last_last_text === ']' && last_text === ',') { + // ], [ goes to new line + if (flags.mode === '[EXPRESSION]') { + flags.mode = '[INDENTED-EXPRESSION]'; + + if (!opt_keep_array_indentation) { + indent(); + } + } + + set_mode('[EXPRESSION]'); + + if (!opt_keep_array_indentation) { + print_newline(); + } + } + else if (last_text === '[') { + if (flags.mode === '[EXPRESSION]') { + flags.mode = '[INDENTED-EXPRESSION]'; + if (!opt_keep_array_indentation) { + indent(); + } + } + set_mode('[EXPRESSION]'); + + if (!opt_keep_array_indentation) { + print_newline(); + } + } + else { + set_mode('[EXPRESSION]'); + } + } + else { + set_mode('[EXPRESSION]'); + } + } + else { + set_mode('(EXPRESSION)'); + } + + if (last_text === ';' || last_type === 'TK_START_BLOCK') { + print_newline(); + } + else if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || last_text === '.') { + // do nothing on (( and )( and ][ and ]( and .( + } + else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') { + print_single_space(); + } + else if (last_word === 'function') { + // function() vs function () + if (opt_space_after_anon_function) { + print_single_space(); + } + } + else if (in_array(last_text, line_starters) || last_text === 'catch') { + print_single_space(); + } + + print_token(); + break; + + case 'TK_END_EXPR': + if (token_text === ']') { + if (opt_keep_array_indentation) { + if (last_text === '}') { + // trim_output(); + // print_newline(true); + remove_indent(); + print_token(); + restore_mode(); + break; + } + } + else { + if (flags.mode === '[INDENTED-EXPRESSION]') { + if (last_text === ']') { + restore_mode(); + print_newline(); + print_token(); + break; + } + } + } + } + restore_mode(); + print_token(); + break; + + case 'TK_START_BLOCK': + if (last_word === 'do') { + set_mode('DO_BLOCK'); + } + else { + set_mode('BLOCK'); + } + + if (opt_braces_on_own_line) { + if (last_type !== 'TK_OPERATOR') { + if (last_text === 'return') { + print_single_space(); + } + else { + print_newline(true); + } + } + + print_token(); + indent(); + } + else { + if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') { + if (last_type === 'TK_START_BLOCK') { + print_newline(); + } + else { + print_single_space(); + } + } + else { + // if TK_OPERATOR or TK_START_EXPR + if (is_array(flags.previous_mode) && last_text === ',') { + print_newline(); // [a, b, c, { + } + } + indent(); + print_token(); + } + + break; + + case 'TK_END_BLOCK': + restore_mode(); + + if (opt_braces_on_own_line) { + print_newline(); + print_token(); + } + else { + if (last_type === 'TK_START_BLOCK') { + // nothing + if (just_added_newline) { + remove_indent(); + } + else { + // {} + trim_output(); + } + } + else { + print_newline(); + } + + print_token(); + } + break; + + case 'TK_WORD': + // no, it's not you. even I have problems understanding how this works + // and what does what. + if (do_block_just_closed) { + // do {} ## while () + print_single_space(); + print_token(); + print_single_space(); + do_block_just_closed = false; + break; + } + + if (token_text === 'function') { + if ((just_added_newline || last_text === ';') && last_text !== '{') { + // make sure there is a nice clean space of at least one blank line + // before a new function definition + n_newlines = just_added_newline ? n_newlines : 0; + + for (i = 0; i < 2 - n_newlines; i += 1) { + print_newline(false); + } + } + } + + if (token_text === 'case' || token_text === 'default') { + if (last_text === ':') { + // switch cases following one another + remove_indent(); + } + else { + // case statement starts in the same line where switch + flags.indentation_level -= 1; + print_newline(); + flags.indentation_level += 1; + } + + print_token(); + flags.in_case = true; + break; + } + + prefix = 'NONE'; + + if (last_type === 'TK_END_BLOCK') { + if (!in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) { + prefix = 'NEWLINE'; + } + else { + if (opt_braces_on_own_line) { + prefix = 'NEWLINE'; + } + else { + prefix = 'SPACE'; + print_single_space(); + } + } + } + else if (last_type === 'TK_SEMICOLON' && (flags.mode === 'BLOCK' || flags.mode === 'DO_BLOCK')) { + prefix = 'NEWLINE'; + } + else if (last_type === 'TK_SEMICOLON' && is_expression(flags.mode)) { + prefix = 'SPACE'; + } + else if (last_type === 'TK_STRING') { + prefix = 'NEWLINE'; + } + else if (last_type === 'TK_WORD') { + prefix = 'SPACE'; + } + else if (last_type === 'TK_START_BLOCK') { + prefix = 'NEWLINE'; + } + else if (last_type === 'TK_END_EXPR') { + print_single_space(); + prefix = 'NEWLINE'; + } + + if (last_type !== 'TK_END_BLOCK' && in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) { + print_newline(); + } + else if (in_array(token_text, line_starters) || prefix === 'NEWLINE') { + if (last_text === 'else') { + // no need to force newline on else break + print_single_space(); + } + else if ((last_type === 'TK_START_EXPR' || last_text === '=' || last_text === ',') && token_text === 'function') { + // no need to force newline on 'function': (function + // DONOTHING + } + else if (last_text === 'return' || last_text === 'throw') { + // no newline between 'return nnn' + print_single_space(); + } + else if (last_type !== 'TK_END_EXPR') { + if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && last_text !== ':') { + // no need to force newline on 'var': for (var x = 0...) + if (token_text === 'if' && last_word === 'else' && last_text !== '{') { + // no newline for } else if { + print_single_space(); + } + else { + print_newline(); + } + } + } + else { + if (in_array(token_text, line_starters) && last_text !== ')') { + print_newline(); + } + } + } + else if (is_array(flags.mode) && last_text === ',' && last_last_text === '}') { + print_newline(); // }, in lists get a newline treatment + } + else if (prefix === 'SPACE') { + print_single_space(); + } + + print_token(); + last_word = token_text; + + if (token_text === 'var') { + flags.var_line = true; + flags.var_line_reindented = false; + flags.var_line_tainted = false; + } + + if (token_text === 'if' || token_text === 'else') { + flags.if_line = true; + } + + break; + + case 'TK_SEMICOLON': + print_token(); + flags.var_line = false; + flags.var_line_reindented = false; + break; + + case 'TK_STRING': + if (last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK' || last_type === 'TK_SEMICOLON') { + print_newline(); + } + else if (last_type === 'TK_WORD') { + print_single_space(); + } + + print_token(); + break; + + case 'TK_EQUALS': + if (flags.var_line) { + // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done + flags.var_line_tainted = true; + } + + print_single_space(); + print_token(); + print_single_space(); + break; + + case 'TK_OPERATOR': + space_before = true; + space_after = true; + + if (flags.var_line && token_text === ',' && (is_expression(flags.mode))) { + // do not break on comma, for(var a = 1, b = 2) + flags.var_line_tainted = false; + } + + if (flags.var_line) { + if (token_text === ',') { + if (flags.var_line_tainted) { + print_token(); + flags.var_line_reindented = true; + flags.var_line_tainted = false; + print_newline(); + break; + } + else { + flags.var_line_tainted = false; + } + // } else if (token_text === ':') { + // hmm, when does this happen? tests don't catch this + // flags.var_line = false; + } + } + + if (last_text === 'return' || last_text === 'throw') { + // "return" had a special handling in TK_WORD. Now we need to return the favor + print_single_space(); + print_token(); + break; + } + + if (token_text === ':' && flags.in_case) { + print_token(); // colon really asks for separate treatment + print_newline(); + flags.in_case = false; + break; + } + + if (token_text === '::') { + // no spaces around exotic namespacing syntax operator + print_token(); + break; + } + + if (token_text === ',') { + if (flags.var_line) { + if (flags.var_line_tainted) { + print_token(); + print_newline(); + flags.var_line_tainted = false; + } + else { + print_token(); + print_single_space(); + } + } + else if (last_type === 'TK_END_BLOCK' && flags.mode !== "(EXPRESSION)") { + print_token(); + if (flags.mode === 'OBJECT' && last_text === '}') { + print_newline(); + } else { + print_single_space(); + } + } + else { + if (flags.mode === 'OBJECT') { + print_token(); + print_newline(); + } + else { + // EXPR or DO_BLOCK + print_token(); + print_single_space(); + } + } + break; + // } else if (in_array(token_text, ['--', '++', '!']) || (in_array(token_text, ['-', '+']) && (in_array(last_type, ['TK_START_BLOCK', 'TK_START_EXPR', 'TK_EQUALS']) || in_array(last_text, line_starters) || in_array(last_text, ['==', '!=', '+=', '-=', '*=', '/=', '+', '-'])))) { + } + else if (in_array(token_text, ['--', '++', '!']) || (in_array(token_text, ['-', '+']) && (in_array(last_type, ['TK_START_BLOCK', 'TK_START_EXPR', 'TK_EQUALS', 'TK_OPERATOR']) || in_array(last_text, line_starters)))) { + // unary operators (and binary +/- pretending to be unary) special cases + space_before = false; + space_after = false; + + if (last_text === ';' && is_expression(flags.mode)) { + // for (;; ++i) + // ^^^ + space_before = true; + } + + if (last_type === 'TK_WORD' && in_array(last_text, line_starters)) { + space_before = true; + } + + if (flags.mode === 'BLOCK' && (last_text === '{' || last_text === ';')) { + // { foo; --i } + // foo(); --bar; + print_newline(); + } + } + else if (token_text === '.') { + // decimal digits or object.property + space_before = false; + + } + else if (token_text === ':') { + if (!is_ternary_op()) { + flags.mode = 'OBJECT'; + space_before = false; + } + } + + if (space_before) { + print_single_space(); + } + + print_token(); + + if (space_after) { + print_single_space(); + } + + if (token_text === '!') { + // flags.eat_next_space = true; + } + + break; + + case 'TK_BLOCK_COMMENT': + lines = token_text.split(/\x0a|\x0d\x0a/); + + if (/^\/\*\*/.test(token_text)) { + // javadoc: reformat and reindent + print_newline(); + output.push(lines[0]); + + for (i = 1; i < lines.length; i += 1) { + print_newline(); + output.push(' '); + output.push(lines[i].replace(/^\s\s*|\s\s*$/, '')); + } + } + else { + // simple block comment: leave intact + if (lines.length > 1) { + // multiline comment block starts with a new line + print_newline(); + trim_output(); + } + else { + // single-line /* comment */ stays where it is + print_single_space(); + } + + for (i = 0; i < lines.length; i += 1) { + output.push(lines[i]); + output.push('\n'); + } + } + + print_newline(); + break; + + case 'TK_INLINE_COMMENT': + print_single_space(); + print_token(); + if (is_expression(flags.mode)) { + print_single_space(); + } else { + print_newline(); + } + break; + + case 'TK_COMMENT': + // print_newline(); + if (wanted_newline) { + print_newline(); + } else { + print_single_space(); + } + print_token(); + print_newline(); + break; + + case 'TK_UNKNOWN': + print_token(); + break; + } + + last_last_text = last_text; + last_type = token_type; + last_text = token_text; + } + + return output.join('').replace(/[\n ]+$/, ''); +} + +module.exports = js_beautify; \ No newline at end of file diff --git a/main.js b/main.js index aac5520..55aae6a 100644 --- a/main.js +++ b/main.js @@ -2,8 +2,8 @@ * Created by Aleksey Chichenkov on 1/28/19. */ -var js_beautify = require("js-beautify"); -var args = require("args-parser")(process.argv); +var js_beautify = require("./libs/js-beautifier"); +var args = require("./libs/args-parser")(process.argv); var fs = require("fs"); var exec = require('child_process').exec; @@ -55,7 +55,14 @@ var post_process_parser = function () { } } - out_js = js_beautify(out_js, {indent_size: 4, space_in_empty_paren: true}); + out_js = js_beautify(out_js, { + indent_size: 4, + indent_char: ' ', + preserve_newlines: true, + space_after_anon_function: true, + keep_array_indentation: false, + braces_on_own_line: false + }); if(!fs.existsSync(output_path)){ fs.mkdirSync(output_path); diff --git a/package.json b/package.json index 33ef518..6089ae5 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,5 @@ "name": "chichenkov", "email": "rolahd@yandex.ru" }, - "dependencies": { - "args-parser": "^1.1.0", - "js-beautify": "^1.8.9" - } + "dependencies": {} } diff --git a/test.js b/test.js index 0d2dade..ec3e59e 100644 --- a/test.js +++ b/test.js @@ -4,7 +4,7 @@ var fs = require("fs"); var exec = require('child_process').exec; -var args = require("args-parser")(process.argv); +var args = require("./libs/args-parser")(process.argv); var cfg_path = "config.js"; var config;