@@ -333,7 +333,7 @@ rule("cosCommand").split(
333333 . split (
334334 char ( "}" ) . optWhitespace ( ) . id ( { CI , value : "catch" , class : "keyword" } )
335335 . optWhitespace ( ) . split (
336- char ( "(" ) . id ( { class : "variable" } ) . char ( ")" ) ,
336+ char ( "(" ) . optWhitespace ( ) . id ( { class : "variable" } ) . optWhitespace ( ) . char ( ")" ) ,
337337 id ( { class : "variable" } )
338338 ) . optWhitespace ( ) . char ( "{" ) . branch ( ) . optWhitespace ( ) . split (
339339 char ( "}" ) ,
@@ -345,7 +345,7 @@ rule("cosCommand").split(
345345 { CI , value : "kill" , class : "keyword" } ,
346346 { CI , value : "k" , class : "keyword" }
347347 ] ) . call ( "postCondition" ) . whitespace ( ) . branch ( ) . split (
348- char ( "(" ) . call ( "variableListExpression" ) . char ( ")" ) ,
348+ char ( "(" ) . optWhitespace ( ) . call ( "variableListExpression" ) . optWhitespace ( ) . char ( ")" ) ,
349349 call ( "variable" )
350350 ) . optWhitespace ( ) . split (
351351 char ( "," ) . optWhitespace ( ) . merge ( ) , // -> loop to the last branch
@@ -475,13 +475,13 @@ rule("cosCommand").split(
475475) . end ( ) ;
476476
477477rule ( "setExpression" ) . split (
478- char ( "(" ) . call ( "variableListExpression" ) . char ( ")" ) ,
478+ char ( "(" ) . optWhitespace ( ) . call ( "variableListExpression" ) . optWhitespace ( ) . char ( ")" ) ,
479479 call ( "variable" )
480480) . optWhitespace ( ) . char ( "=" ) . optWhitespace ( )
481481 . call ( "expression" ) . exit ( ) . end ( ) ;
482482
483- rule ( "variableListExpression" ) . branch ( ) . optWhitespace ( ) . call ( "variable" ) . optWhitespace ( ) . split (
484- char ( "," ) . merge ( ) ,
483+ rule ( "variableListExpression" ) . branch ( ) . call ( "variable" ) . optWhitespace ( ) . split (
484+ char ( "," ) . optWhitespace ( ) . merge ( ) ,
485485 any ( )
486486) . exit ( ) . end ( ) ;
487487
@@ -532,7 +532,7 @@ rule("doArgument").split(
532532 char ( { value : "%" , type : "memberMethod" } ) ,
533533 any ( )
534534 ) . id ( { type : "memberMethod" } ) . split (
535- char ( "(" ) . call ( "argumentList" ) . char ( ")" ) . split (
535+ char ( "(" ) . optWhitespace ( ) . call ( "argumentList" ) . optWhitespace ( ) . char ( ")" ) . split (
536536 char ( { value : "." , type : "*" } ) . merge ( ) ,
537537 any ( )
538538 ) ,
@@ -541,32 +541,108 @@ rule("doArgument").split(
541541 call ( "class" )
542542) . call ( "postCondition" ) . exit ( ) . end ( ) ;
543543
544+ rule ( "jsonValue" ) . split (
545+ char ( "(" ) . optWhitespace ( ) . call ( "expression" ) . optWhitespace ( ) . char ( ")" ) ,
546+ char ( {
547+ value : "{" ,
548+ class : "argument"
549+ } ) . optWhitespace ( ) . split (
550+ char ( {
551+ value : "}" ,
552+ class : "argument"
553+ } ) . exit ( ) ,
554+ call ( "jsonObjectBody" ) . optWhitespace ( ) . char ( {
555+ value : "}" ,
556+ class : "argument"
557+ } )
558+ ) ,
559+ char ( {
560+ value : "[" ,
561+ class : "argument"
562+ } ) . optWhitespace ( ) . split (
563+ char ( {
564+ value : "]" ,
565+ class : "argument"
566+ } ) ,
567+ call ( "jsonArrayBody" ) . optWhitespace ( ) . char ( {
568+ value : "]" ,
569+ class : "argument"
570+ } )
571+ ) ,
572+ string ( ) ,
573+ constant ( )
574+ ) . exit ( ) . end ( ) ;
575+
576+ rule ( "jsonObjectBody" ) . branch ( ) . string ( ) . optWhitespace ( ) . char ( ":" ) . optWhitespace ( ) . call ( "jsonValue" )
577+ . optWhitespace ( ) . split (
578+ char ( "," ) . optWhitespace ( ) . merge ( ) ,
579+ any ( )
580+ ) . exit ( ) . end ( ) ;
581+
582+ rule ( "jsonArrayBody" ) . branch ( ) . optWhitespace ( ) . call ( "jsonValue" ) . optWhitespace ( ) . split (
583+ char ( "," ) . merge ( ) ,
584+ any ( )
585+ ) . exit ( ) . end ( ) ;
586+
544587rule ( "expression" ) . split (
545588 constant ( ) ,
546- char ( "(" ) . call ( "expression" ) . char ( ")" ) ,
589+ char ( "(" ) . optWhitespace ( ) . call ( "expression" ) . optWhitespace ( ) . char ( ")" ) ,
590+ char ( {
591+ value : "[" ,
592+ class : "argument"
593+ } ) . optWhitespace ( ) . split (
594+ char ( {
595+ value : "]" ,
596+ class : "argument"
597+ } ) ,
598+ call ( "jsonArrayBody" ) . optWhitespace ( ) . char ( {
599+ value : "]" ,
600+ class : "argument"
601+ } )
602+ ) ,
603+ char ( {
604+ value : "{" ,
605+ class : "argument"
606+ } ) . optWhitespace ( ) . split (
607+ char ( {
608+ value : "}" ,
609+ class : "argument"
610+ } ) ,
611+ call ( "jsonObjectBody" ) . optWhitespace ( ) . char ( {
612+ value : "}" ,
613+ class : "argument"
614+ } )
615+ ) ,
616+ char ( "-" ) . call ( "expression" ) ,
547617 char ( "'" ) . call ( "expression" ) ,
548618 string ( ) ,
549619 tryCall ( "variable" ) ,
550620 tryCall ( "class" ) ,
551621 tryCall ( "function" )
552622) . optWhitespace ( ) . split (
553623 split (
554- char ( "+" ) ,
555- char ( "-" ) ,
556- char ( "*" ) ,
557- char ( "/" ) ,
558- char ( "_" ) ,
559- char ( "=" ) ,
560- char ( "'" ) . char ( [ "=" , ">" , "<" ] ) ,
561- char ( [ "<" , ">" ] ) . split (
562- char ( "=" ) ,
624+ char ( { value : "+" , class : "special" } ) ,
625+ char ( { value : "-" , class : "special" } ) ,
626+ char ( { value : "*" , class : "special" } ) ,
627+ char ( { value : "/" , class : "special" } ) ,
628+ char ( { value : "_" , class : "special" } ) ,
629+ char ( { value : "=" , class : "special" } ) ,
630+ char ( { value : "'" , class : "special" } ) . char ( [
631+ { value : "=" , class : "special" } ,
632+ { value : ">" , class : "special" } ,
633+ { value : "<" , class : "special" }
634+ ] ) ,
635+ char ( [ { value : "<" , class : "special" } , { value : ">" , class : "special" } ] ) . split (
636+ char ( { value : "=" , class : "special" } ) ,
563637 any ( )
564638 ) ,
565- char ( "&" ) . split (
566- char ( "&" ) ,
639+ char ( { value : "&" , class : "special" } ) . split (
640+ char ( { value : "&" , class : "special" } ) ,
567641 any ( )
568642 ) ,
569- char ( "|" ) . char ( "|" )
643+ char ( { value : "|" , class : "special" } ) . char ( { value : "|" , class : "special" } ) ,
644+ char ( { value : "[" , class : "special" } ) ,
645+ char ( { value : "]" , class : "special" } )
570646 ) . optWhitespace ( ) . call ( "expression" ) ,
571647 any ( )
572648) . exit ( ) . end ( ) ;
@@ -581,7 +657,7 @@ rule("variable").split(
581657 char ( { value : "%" , class : "variable" , type : "variable" } )
582658 . id ( { class : "variable" , type : "variable" } )
583659 ) . split (
584- char ( "(" ) . call ( "nonEmptyArgumentList" ) . char ( ")" ) ,
660+ char ( "(" ) . optWhitespace ( ) . call ( "nonEmptyArgumentList" ) . optWhitespace ( ) . char ( ")" ) ,
585661 any ( )
586662 ) . branch ( ) . split (
587663 char ( { value : "." , type : "*" } ) . call ( "member" ) . merge ( ) ,
@@ -596,7 +672,7 @@ rule("globalBody").split(
596672 char ( { value : "." , class : "global" , type : "global" } ) . merge ( ) ,
597673 any ( )
598674) . split (
599- char ( "(" ) . call ( "argumentList" ) . char ( ")" ) ,
675+ char ( "(" ) . optWhitespace ( ) . call ( "argumentList" ) . optWhitespace ( ) . char ( ")" ) ,
600676 any ( )
601677) . exit ( ) . end ( ) ;
602678
@@ -605,7 +681,7 @@ rule("member").split(
605681 char ( { value : "#" , type : "member" } ) ,
606682 any ( )
607683) . id ( { type : "member" } ) . split (
608- char ( "(" ) . call ( "argumentList" ) . char ( ")" ) ,
684+ char ( "(" ) . optWhitespace ( ) . call ( "argumentList" ) . optWhitespace ( ) . char ( ")" ) ,
609685 any ( )
610686) . exit ( ) . end ( ) ;
611687
@@ -637,7 +713,7 @@ rule("classStatic").split(
637713 char ( { value : "%" , type : "publicClassMember" , class : "keyword" } ) ,
638714 any ( )
639715 ) . id ( { type : "publicClassMember" , class : "keyword" } ) . split (
640- char ( "(" ) . call ( "argumentList" ) . char ( ")" )
716+ char ( "(" ) . optWhitespace ( ) . call ( "argumentList" ) . optWhitespace ( ) . char ( ")" )
641717 )
642718) . exit ( ) . end ( ) ;
643719
@@ -745,7 +821,7 @@ rule("function").char({ value: "$", class: "keyword" }).split(
745821 char ( { value : "$" , class : "keyword" } ) . id ( { class : "keyword" } ) ,
746822 any ( )
747823) . split (
748- char ( "(" ) . call ( "argumentList" ) . char ( ")" ) ,
824+ char ( "(" ) . optWhitespace ( ) . call ( "argumentList" ) . optWhitespace ( ) . char ( ")" ) ,
749825 any ( )
750826) . exit ( ) . end ( ) ;
751827
@@ -831,7 +907,7 @@ rule("SQLClassName").split(
831907
832908rule ( "SQLExpression" ) . split (
833909 constant ( ) ,
834- char ( "(" ) . call ( "SQLExpression" ) . char ( ")" ) ,
910+ char ( "(" ) . optWhitespace ( ) . call ( "SQLExpression" ) . optWhitespace ( ) . char ( ")" ) ,
835911 id ( { CI , value : "not" , class : "keyword" } ) . optWhitespace ( ) . call ( "SQLExpression" ) ,
836912 char ( { value : "'" , class : "string" } ) . branch ( ) . split (
837913 char ( { value : "'" , class : "string" } ) ,
0 commit comments