Skip to content

Commit a503120

Browse files
SQL grammar enhance
1 parent 08efe4a commit a503120

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"printableName": "Cache Web Terminal",
66
"description": "Web-based terminal emulator for Caché administering.",
77
"author": "ZitRo",
8-
"version": "4.0.0-beta.1",
8+
"version": "4.0.0-beta.2",
99
"gaID": "UA-83005064-2",
1010
"releaseNumber": 26,
1111
"scripts": {

src/client/js/parser/grammar.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,16 @@ rule("SQLMode").split(
576576
.call("SQLFrom").whitespace()
577577
.id({ CI, value: "where", class: "keyword" }).whitespace().call("SQLExpression")
578578
.whitespace(),
579+
id({ CI, value: "update", class: "keyword" }).whitespace()
580+
.call("SQLClassName").whitespace()
581+
.id({ CI, value: "set", class: "keyword" }).whitespace().branch()
582+
.id({ type: "sqlFieldName", class: "variable" }).optWhitespace().char("=").optWhitespace()
583+
.call("SQLExpression").optWhitespace().split(
584+
char(",").optWhitespace().merge(),
585+
any()
586+
)
587+
.id({ CI, value: "where", class: "keyword" }).whitespace().call("SQLExpression")
588+
.whitespace(),
579589
id({ CI, value: "select", class: "keyword" }).whitespace().split(
580590
id({ CI, value: "top", class: "keyword" }).whitespace().constant().whitespace(),
581591
any()
@@ -612,7 +622,10 @@ rule("SQLMode").split(
612622
)
613623
).exit().end();
614624

615-
rule("SQLFrom").id({ CI, value: "from", class: "keyword" }).whitespace().split(
625+
rule("SQLFrom").id({ CI, value: "from", class: "keyword" }).whitespace().call("SQLClassName")
626+
.exit().end();
627+
628+
rule("SQLClassName").split(
616629
char({ value: "%", type: "sqlClassname", class: "classname" }),
617630
any()
618631
).branch().id({ type: "sqlClassname", class: "classname" }).split(
@@ -622,13 +635,22 @@ rule("SQLFrom").id({ CI, value: "from", class: "keyword" }).whitespace().split(
622635
char({ value: "_", type: "sqlClassname", class: "classname" })
623636
.id({ CI, type: "sqlClassname", class: "classname" }),
624637
any()
625-
)
626-
).exit().end();
638+
)).exit().end();
627639

628640
rule("SQLExpression").split(
629641
constant(),
630642
char("(").call("SQLExpression").char(")"),
631643
id({ CI, value: "not", class: "keyword" }).optWhitespace().call("SQLExpression"),
644+
char({ value: "'", class: "string" }).branch().split(
645+
char({ value: "'", class: "string" }),
646+
split(
647+
constant({ class: "string" }),
648+
id({ class: "string" }),
649+
string({ class: "string" }),
650+
char({ class: "string" }),
651+
whitespace()
652+
).merge()
653+
),
632654
id({ class: "variable", type: "sqlFieldName" })
633655
).optWhitespace().split(
634656
split(

0 commit comments

Comments
 (0)