<string>::= '"' [ "\" . | '^ " \' ] * '"'
<path>::= <string> [ "/" <string> ] *
<string_list>::= <string> [ "," <string> ] *
<alpha>::= [ 'A - Z' | 'a - z' |' :_' ] +
<number>::= [ '0 - 9' ] +
<id>::= <alpha> [ <alpha> | <number> ] *
<rvar>::= "@" <id>
<svar>::= "%" <id>
<vvar>::= "$" <id>
<refine>::= [ "sub" | "super" ] ?
<qualifier>::= [ "inverse" ] ? <refine> <path>
<assign>::= <vvar> "<-" <path>
<attr_list>::= [ "attr" <assign> [ "," <assign>] * ] ?
<set>::= "ref" <val>
<boole>::= [ "false" | "true" ]
<val>::= "{" [ <string_list> ] ? "}"