/
  (?(DEFINE)
     (?<number>    -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )    
     (?<boolean>   true | false | null )
     (?<string>    " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
     (?<array>     \[  (?:  (?&json)  (?: , (?&json)  )*  )?  \s* \] )
     (?<pair>      \s* (?&string) \s* : (?&json)  )
     (?<object>    \{  (?:  (?&pair)  (?: , (?&pair)  )*  )?  \s* \} )
     (?<json>      \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) )  ) \s*
     (?<tag>       \@(?:[[:alnum:]])*)
  )
  
  (?'actiontag'
    (?:\@(?:[[:alnum:]_-])*)
  )
  (?:\=
    (?:
     (?:
      (?'params_json'(?&json))
     )
     |
     (?:
       (?'params'(?:[[:alnum:]_-]+))
     )
    )
  )?
/
ixgm