Skip to content

Commit ea07374

Browse files
committed
add operator "NOT LIKE"
1 parent 2b3124b commit ea07374

File tree

5 files changed

+17
-7
lines changed

5 files changed

+17
-7
lines changed

embedded.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<meta name='viewport' content='width=device-width, initial-scale=1'>
99

1010
<link rel='stylesheet' type='text/css' media='screen' href='assets/fonts/fonts.css'>
11-
<script src="lib/pako/pako.js"></script>
11+
<!-- <script src="proxy.php?url=https%3A%2F%2Fgithub.com%2Flib%2Fpako%2Fpako.js"></script>
1212
<script src="lib/zip.js/zip.min.js"></script>
13-
<script src="lib/markdownit/markdownit.min.js"></script>
13+
<script src="proxy.php?url=https%3A%2F%2Fgithub.com%2Flib%2Fmarkdownit%2Fmarkdownit.min.js"></script> -->
1414

1515
<script type="module" src="src/client/embedded/EmbeddedStarter.ts"></script>
1616

@@ -34,8 +34,7 @@ <h1>Erstes Beispiel</h1>
3434
<h1>Zweites Beispiel</h1>
3535

3636
<div class="sql-online" style="width: calc(100% - 10px); height: 600px; margin-left: 5px" data-sql-online="{
37-
'id': 'abcde',
38-
'databaseURL': 'assets/databases/world1.sqLite'
37+
'id': 'abcde'
3938
}">
4039
<script type="text/plain" title="Test1.sql" data-type="sql">
4140
select * from test;

src/client/compiler/lexer/Lexer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export class Lexer {
4242
tokenTypesToMerge: { first: TokenType, second: TokenType, merged: TokenType }[] = [
4343
{ first: TokenType.keywordNotIn, second: TokenType.keywordIn, merged: TokenType.keywordNotIn },
4444
{ first: TokenType.keywordNot, second: TokenType.keywordBetween, merged: TokenType.keywordNotBetween },
45+
{ first: TokenType.keywordNot, second: TokenType.keywordLike, merged: TokenType.keywordNotLike },
4546
{ first: TokenType.keywordIs, second: TokenType.keywordNot, merged: TokenType.isNot },
4647
{ first: TokenType.isNot, second: TokenType.keywordNull, merged: TokenType.isNotNull },
4748
{ first: TokenType.keywordIs, second: TokenType.keywordNull, merged: TokenType.isNull },

src/client/compiler/lexer/Token.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export enum TokenType {
6161
keywordEnum,
6262
keywordBetween,
6363
keywordNotBetween,
64+
keywordNotLike,
6465

6566
keywordOr,
6667
keywordAnd,
@@ -238,7 +239,8 @@ export var TokenTypeReadable: {[tt: number]: string} = {
238239
[TokenType.keywordView]: "view",
239240
[TokenType.keywordEnum]: "enum",
240241
[TokenType.keywordBetween]: "between",
241-
[TokenType.keywordNotBetween]: "not between",
242+
[TokenType.keywordNotBetween]: "not between",
243+
[TokenType.keywordNotLike]: "not like",
242244

243245

244246
[TokenType.keywordAnd]: "and",
@@ -448,7 +450,7 @@ export var keywordList: {[keyword: string]:TokenType} = {
448450
"offset": TokenType.keywordOffset,
449451
"in": TokenType.keywordIn,
450452
"not in": TokenType.keywordNotIn,
451-
"not between": TokenType.keywordNotBetween,
453+
"not between": TokenType.keywordNotBetween,
452454
"like": TokenType.keywordLike,
453455
"collate": TokenType.keywordCollate,
454456
"default": TokenType.keywordDefault,

src/client/compiler/parser/Parser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class Parser {
2222
static operatorPrecedence: TokenType[][] = [
2323
[TokenType.keywordOr], [TokenType.keywordAnd],
2424
[TokenType.keywordBetween, TokenType.keywordNotBetween],
25-
[TokenType.lower, TokenType.lowerOrEqual, TokenType.greater, TokenType.greaterOrEqual, TokenType.equal, TokenType.notEqual, TokenType.keywordLike],
25+
[TokenType.lower, TokenType.lowerOrEqual, TokenType.greater, TokenType.greaterOrEqual, TokenType.equal, TokenType.notEqual, TokenType.keywordLike, TokenType.keywordNotLike],
2626
[TokenType.concatenation, TokenType.plus, TokenType.minus], [TokenType.multiplication, TokenType.division, TokenType.modulo],
2727
[TokenType.keywordIn, TokenType.keywordNotIn]
2828
];

src/client/compiler/parser/SQLTypes.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,10 @@ varcharType.addBinaryOperation(TokenType.keywordLike, varcharType, booleanType);
403403
varcharType.addBinaryOperation(TokenType.keywordLike, textType, booleanType);
404404
textType.addBinaryOperation(TokenType.keywordLike, textType, booleanType);
405405

406+
varcharType.addBinaryOperation(TokenType.keywordNotLike, varcharType, booleanType);
407+
varcharType.addBinaryOperation(TokenType.keywordNotLike, textType, booleanType);
408+
textType.addBinaryOperation(TokenType.keywordNotLike, textType, booleanType);
409+
406410
charType.addBinaryOperation(TokenType.concatenation, charType, charType);
407411
charType.addBinaryOperation(TokenType.concatenation, varcharType, charType);
408412
charType.addBinaryOperation(TokenType.concatenation, textType, textType);
@@ -411,6 +415,10 @@ charType.addBinaryOperation(TokenType.keywordLike, charType, booleanType);
411415
charType.addBinaryOperation(TokenType.keywordLike, textType, booleanType);
412416
textType.addBinaryOperation(TokenType.keywordLike, textType, booleanType);
413417

418+
charType.addBinaryOperation(TokenType.keywordNotLike, charType, booleanType);
419+
charType.addBinaryOperation(TokenType.keywordNotLike, textType, booleanType);
420+
textType.addBinaryOperation(TokenType.keywordNotLike, textType, booleanType);
421+
414422
booleanType.addBinaryOperation(TokenType.equal, booleanType, booleanType);
415423

416424
let numericBinaryOperators: TokenType[] = [TokenType.plus, TokenType.minus, TokenType.multiplication, TokenType.division, TokenType.modulo];

0 commit comments

Comments
 (0)