@@ -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+
402464rule ( "termSpecial" ) . split (
403465 split (
404466 char ( { value : "!" , class : "special" } ) ,
0 commit comments