Unified · Split
| @@ -1,4 +1,4 @@ | |||
| 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+json+lua+nginx+perl+php+python+rust+sql+typescript */ | 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+json+kotlin+lua+nginx+perl+php+python+rust+sql+typescript */ |
| 2 | var _self = (typeof window !== 'undefined') | 2 | var _self = (typeof window !== 'undefined') |
| 3 | ? window // if in browser | 3 | ? window // if in browser |
| 4 | : ( | 4 | : ( |
| @@ -178,7 +178,7 @@ var _ = _self.Prism = { · 173 unmodified lines | |||
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | if (parent) { | 180 | if (parent) { |
| 181 | language = (parent.className.match(lang) || [,''])[1]; | 181 | language = (parent.className.match(lang) || [,''])[1].toLowerCase(); |
| 182 | grammar = _.languages[language]; | 182 | grammar = _.languages[language]; |
| 183 | } | 183 | } |
| 184 | 184 | ||
| @@ -201,7 +201,9 @@ var _ = _self.Prism = { · 16 unmodified lines | |||
| 201 | code: code | 201 | code: code |
| 202 | }; | 202 | }; |
| 203 | 203 | ||
| 204 | if (!code || !grammar) { | 204 | _.hooks.run('before-sanity-check', env); |
| 205 | |||
| 206 | if (!env.code || !env.grammar) { | ||
| 205 | _.hooks.run('complete', env); | 207 | _.hooks.run('complete', env); |
| 206 | return; | 208 | return; |
| 207 | } | 209 | } |
| @@ -477,7 +479,12 @@ Token.stringify = function(o, language, parent) { · 269 unmodified lines | |||
| 477 | // _.filename = script.src; | 479 | // _.filename = script.src; |
| 478 | 480 | ||
| 479 | // if (document.addEventListener && !script.hasAttribute('data-manual')) { | 481 | // if (document.addEventListener && !script.hasAttribute('data-manual')) { |
| 480 | // document.addEventListener('DOMContentLoaded', _.highlightAll); | 482 | // if(document.readyState !== "loading") { |
| 483 | // requestAnimationFrame(_.highlightAll, 0); | ||
| 484 | // } | ||
| 485 | // else { | ||
| 486 | // document.addEventListener('DOMContentLoaded', _.highlightAll); | ||
| 487 | // } | ||
| 481 | // } | 488 | // } |
| 482 | // } | 489 | // } |
| 483 | 490 | ||
| @@ -634,7 +641,7 @@ Prism.languages.insertBefore('javascript', 'keyword', { · 150 unmodified lines | |||
| 634 | } | 641 | } |
| 635 | }); | 642 | }); |
| 636 | 643 | ||
| 637 | Prism.languages.insertBefore('javascript', 'class-name', { | 644 | Prism.languages.insertBefore('javascript', 'string', { |
| 638 | 'template-string': { | 645 | 'template-string': { |
| 639 | pattern: /`(?:\\\\|\\?[^\\])*?`/, | 646 | pattern: /`(?:\\\\|\\?[^\\])*?`/, |
| 640 | greedy: true, | 647 | greedy: true, |
| @@ -726,11 +733,15 @@ Prism.languages.coffeescript = Prism.languages.extend('javascript', { · 85 unmodified lines | |||
| 726 | 'string': [ | 733 | 'string': [ |
| 727 | 734 | ||
| 728 | // Strings are multiline | 735 | // Strings are multiline |
| 729 | /'(?:\\?[^\\])*?'/, | 736 | { |
| 737 | pattern: /'(?:\\?[^\\])*?'/, | ||
| 738 | greedy: true, | ||
| 739 | }, | ||
| 730 | 740 | ||
| 731 | { | 741 | { |
| 732 | // Strings are multiline | 742 | // Strings are multiline |
| 733 | pattern: /"(?:\\?[^\\])*?"/, | 743 | pattern: /"(?:\\?[^\\])*?"/, |
| 744 | greedy: true, | ||
| 734 | inside: { | 745 | inside: { |
| 735 | 'interpolation': interpolation | 746 | 'interpolation': interpolation |
| 736 | } | 747 | } |
| @@ -776,10 +787,12 @@ Prism.languages.insertBefore('coffeescript', 'string', { · 39 unmodified lines | |||
| 776 | 'multiline-string': [ | 787 | 'multiline-string': [ |
| 777 | { | 788 | { |
| 778 | pattern: /'''[\s\S]*?'''/, | 789 | pattern: /'''[\s\S]*?'''/, |
| 790 | greedy: true, | ||
| 779 | alias: 'string' | 791 | alias: 'string' |
| 780 | }, | 792 | }, |
| 781 | { | 793 | { |
| 782 | pattern: /"""[\s\S]*?"""/, | 794 | pattern: /"""[\s\S]*?"""/, |
| 795 | greedy: true, | ||
| 783 | alias: 'string', | 796 | alias: 'string', |
| 784 | inside: { | 797 | inside: { |
| 785 | interpolation: interpolation | 798 | interpolation: interpolation |
| @@ -794,6 +807,8 @@ Prism.languages.insertBefore('coffeescript', 'keyword', { · 8 unmodified lines | |||
| 794 | 'property': /(?!\d)\w+(?=\s*:(?!:))/ | 807 | 'property': /(?!\d)\w+(?=\s*:(?!:))/ |
| 795 | }); | 808 | }); |
| 796 | 809 | ||
| 810 | delete Prism.languages.coffeescript['template-string']; | ||
| 811 | |||
| 797 | }(Prism)); | 812 | }(Prism)); |
| 798 | /** | 813 | /** |
| 799 | * Original by Samuel Flores | 814 | * Original by Samuel Flores |
| @@ -1018,10 +1033,75 @@ Prism.languages.json = { · 218 unmodified lines | |||
| 1018 | 1033 | ||
| 1019 | Prism.languages.jsonp = Prism.languages.json; | 1034 | Prism.languages.jsonp = Prism.languages.json; |
| 1020 | 1035 | ||
| 1036 | (function (Prism) { | ||
| 1037 | Prism.languages.kotlin = Prism.languages.extend('clike', { | ||
| 1038 | 'keyword': { | ||
| 1039 | // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get | ||
| 1040 | pattern: /(^|[^.])\b(?:abstract|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|else|enum|final|finally|for|fun|get|if|import|in|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|out|override|package|private|protected|public|reified|return|sealed|set|super|tailrec|this|throw|to|try|val|var|when|where|while)\b/, | ||
| 1041 | lookbehind: true | ||
| 1042 | }, | ||
| 1043 | 'function': [ | ||
| 1044 | /\w+(?=\s*\()/, | ||
| 1045 | { | ||
| 1046 | pattern: /(\.)\w+(?=\s*\{)/, | ||
| 1047 | lookbehind: true | ||
| 1048 | } | ||
| 1049 | ], | ||
| 1050 | 'number': /\b(?:0[bx][\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?[fFL]?)\b/, | ||
| 1051 | 'operator': /\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/ | ||
| 1052 | }); | ||
| 1053 | |||
| 1054 | delete Prism.languages.kotlin["class-name"]; | ||
| 1055 | |||
| 1056 | Prism.languages.insertBefore('kotlin', 'string', { | ||
| 1057 | 'raw-string': { | ||
| 1058 | pattern: /(["'])\1\1[\s\S]*?\1{3}/, | ||
| 1059 | alias: 'string' | ||
| 1060 | // See interpolation below | ||
| 1061 | } | ||
| 1062 | }); | ||
| 1063 | Prism.languages.insertBefore('kotlin', 'keyword', { | ||
| 1064 | 'annotation': { | ||
| 1065 | pattern: /\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/, | ||
| 1066 | alias: 'builtin' | ||
| 1067 | } | ||
| 1068 | }); | ||
| 1069 | Prism.languages.insertBefore('kotlin', 'function', { | ||
| 1070 | 'label': { | ||
| 1071 | pattern: /\w+@|@\w+/, | ||
| 1072 | alias: 'symbol' | ||
| 1073 | } | ||
| 1074 | }); | ||
| 1075 | |||
| 1076 | var interpolation = [ | ||
| 1077 | { | ||
| 1078 | pattern: /\$\{[^}]+\}/, | ||
| 1079 | inside: { | ||
| 1080 | delimiter: { | ||
| 1081 | pattern: /^\$\{|\}$/, | ||
| 1082 | alias: 'variable' | ||
| 1083 | }, | ||
| 1084 | rest: Prism.util.clone(Prism.languages.kotlin) | ||
| 1085 | } | ||
| 1086 | }, | ||
| 1087 | { | ||
| 1088 | pattern: /\$\w+/, | ||
| 1089 | alias: 'variable' | ||
| 1090 | } | ||
| 1091 | ]; | ||
| 1092 | |||
| 1093 | Prism.languages.kotlin['string'].inside = Prism.languages.kotlin['raw-string'].inside = { | ||
| 1094 | interpolation: interpolation | ||
| 1095 | }; | ||
| 1096 | |||
| 1097 | }(Prism)); | ||
| 1021 | Prism.languages.lua = { | 1098 | Prism.languages.lua = { |
| 1022 | 'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m, | 1099 | 'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m, |
| 1023 | // \z may be used to skip the following space | 1100 | // \z may be used to skip the following space |
| 1024 | 'string': /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/, | 1101 | 'string': { |
| 1102 | pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/, | ||
| 1103 | greedy: true | ||
| 1104 | }, | ||
| 1025 | 'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i, | 1105 | 'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i, |
| 1026 | 'keyword': /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, | 1106 | 'keyword': /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, |
| 1027 | 'function': /(?!\d)\w+(?=\s*(?:[({]))/, | 1107 | 'function': /(?!\d)\w+(?=\s*(?:[({]))/, |
| @@ -1307,7 +1387,10 @@ Prism.languages.python= { · 279 unmodified lines | |||
| 1307 | pattern: /(^|[^\\])#.*/, | 1387 | pattern: /(^|[^\\])#.*/, |
| 1308 | lookbehind: true | 1388 | lookbehind: true |
| 1309 | }, | 1389 | }, |
| 1310 | 'string': /("|')(?:\\?.)*?\1/, | 1390 | 'string': { |
| 1391 | pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/, | ||
| 1392 | greedy: true | ||
| 1393 | }, | ||
| 1311 | 'function' : { | 1394 | 'function' : { |
| 1312 | pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g, | 1395 | pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g, |
| 1313 | lookbehind: true | 1396 | lookbehind: true |
| @@ -1387,7 +1470,7 @@ Prism.languages.sql= { · 73 unmodified lines | |||
| 1387 | }, | 1470 | }, |
| 1388 | 'variable': /@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/, | 1471 | 'variable': /@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/, |
| 1389 | 'function': /\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i, // Should we highlight user defined functions too? | 1472 | 'function': /\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i, // Should we highlight user defined functions too? |
| 1390 | 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATETIME|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i, | 1473 | 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i, |
| 1391 | 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i, | 1474 | 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i, |
| 1392 | 'number': /\b-?(?:0x)?\d*\.?[\da-f]+\b/, | 1475 | 'number': /\b-?(?:0x)?\d*\.?[\da-f]+\b/, |
| 1393 | 'operator': /[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, | 1476 | 'operator': /[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, |