Skip to content

Commit cf388b4

Browse files
Open, use and close commands grammar add
1 parent 051f2d0 commit cf388b4

2 files changed

Lines changed: 71 additions & 9 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.17",
8+
"version": "4.0.0-beta.18",
99
"gaID": "UA-83005064-2",
1010
"releaseNumber": 26,
1111
"scripts": {

src/client/js/parser/grammar.js

Lines changed: 70 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,16 @@ rule("cosCommand").split(
231231
constant(),
232232
any()
233233
).exit(),
234+
id([
235+
{ CI, value: "close", class: "keyword" },
236+
{ CI, value: "c", class: "keyword" }
237+
]).call("postCondition").whitespace().branch().split(
238+
string(),
239+
constant()
240+
).split(
241+
char(",").optWhitespace().merge(),
242+
any()
243+
).exit(),
234244
id({ CI, value: "continue", class: "keyword" }).call("postCondition").exit(),
235245
id([
236246
{ CI, value: "do", class: "keyword" },
@@ -273,6 +283,35 @@ rule("cosCommand").split(
273283
tryCall("variable"),
274284
call("global")
275285
).exit(),
286+
id([
287+
{ CI, value: "open", class: "keyword" },
288+
{ CI, value: "o", class: "keyword" }
289+
]).call("postCondition").whitespace().branch().split(
290+
string(),
291+
constant()
292+
).split(
293+
char(":").split(
294+
char("(").call("deviceParameters").char(")").split(
295+
char(":").split(
296+
constant().split(
297+
char(":").string(),
298+
any()
299+
),
300+
string()
301+
),
302+
any()
303+
),
304+
constant().split(
305+
char(":").string(),
306+
any()
307+
),
308+
string()
309+
),
310+
any()
311+
).split(
312+
char(",").optWhitespace().merge(),
313+
any()
314+
).exit(),
276315
id([
277316
{ CI, value: "zwrite", class: "keyword" },
278317
{ CI, value: "zw", class: "keyword" }
@@ -310,6 +349,14 @@ rule("cosCommand").split(
310349
char(",").optWhitespace().merge(), // -> loop to the last branch
311350
any().exit()
312351
),
352+
id([
353+
{ CI, value: "quit", class: "keyword" },
354+
{ CI, value: "q", class: "keyword" },
355+
{ CI, value: "return", class: "keyword" }
356+
]).call("postCondition").optWhitespace().split(
357+
tryCall("expression"),
358+
any()
359+
).exit(),
313360
id([
314361
{ CI, value: "read", class: "keyword" },
315362
{ CI, value: "r", class: "keyword" }
@@ -330,14 +377,6 @@ rule("cosCommand").split(
330377
char(",").optWhitespace().merge(), // -> loop to the last branch
331378
any().exit()
332379
),
333-
id([
334-
{ CI, value: "quit", class: "keyword" },
335-
{ CI, value: "q", class: "keyword" },
336-
{ CI, value: "return", class: "keyword" }
337-
]).call("postCondition").optWhitespace().split(
338-
tryCall("expression"),
339-
any()
340-
).exit(),
341380
id([
342381
{ CI, value: "tstart", class: "keyword" },
343382
{ CI, value: "ts", class: "keyword" },
@@ -348,6 +387,20 @@ rule("cosCommand").split(
348387
{ CI, value: "trollback", class: "keyword" },
349388
{ CI, value: "tro", class: "keyword" }
350389
]).call("postCondition").exit(),
390+
id([
391+
{ CI, value: "use", class: "keyword" },
392+
{ CI, value: "u", class: "keyword" }
393+
]).call("postCondition").whitespace().branch().split(
394+
string(),
395+
constant(),
396+
char({ value: "$", class: "keyword" }).id([
397+
{ CI, value: "io", class: "keyword" },
398+
{ CI, value: "principal", class: "keyword" }
399+
])
400+
).split(
401+
char(",").optWhitespace().merge(),
402+
any()
403+
).exit(),
351404
id([
352405
{ CI, value: "xecute", class: "keyword" },
353406
{ CI, value: "x", class: "keyword" }
@@ -399,6 +452,15 @@ rule("cosCommand").split(
399452
)
400453
).end();
401454

455+
rule("deviceParameters").branch().split(
456+
char({ value: "/", class: "special" }).id({ class: "special" }).char("=").call("expression")
457+
.split(
458+
char(":").merge(),
459+
any()
460+
),
461+
any()
462+
).exit().end();
463+
402464
rule("termSpecial").split(
403465
split(
404466
char({ value: "!", class: "special" }),

0 commit comments

Comments
 (0)