6 <P><B><string></B>::= '"' [ "\" . | '^ " \' ] * '"'</A>
8 <P><B><path></B>::= <<A HREF="#string">string</A>> [ "/" <<A HREF="#string">string</A>> ] *</A>
10 <P><B><string_list></B>::= <<A HREF="#string">string</A>> [ "," <<A HREF="#string">string</A>> ] *</A>
12 <P><B><alpha></B>::= [ 'A - Z' | 'a - z' |' :_' ] + </A>
14 <P><B><number></B>::= [ '0 - 9' ] + </A>
16 <P><B><id></B>::= <<A HREF="#alpha">alpha</A>> [ <<A HREF="#alpha">alpha</A>> | <<A HREF="#number">number</A>> ] * </A>
18 <P><B><rvar></B>::= "@" <<A HREF="#id">id</A>> </A>
20 <P><B><svar></B>::= "%" <<A HREF="#id">id</A>> </A>
22 <P><B><vvar></B>::= "$" <<A HREF="#id">id</A>> </A>
24 <P><B><refine></B>::= [ "sub" | "super" ] ? </A>
26 <P><B><qualifier></B>::= [ "inverse" ] ? <<A HREF="#refine">refine</A>> <<A HREF="#path">path</A>> </A>
28 <P><B><assign></B>::= <<A HREF="#vvar">vvar</A>> "<-" <<A HREF="#path">path</A>> </A>
30 <P><B><attr_list></B>::= [ "attr" <<A HREF="#assign">assign</A>> [ "," <<A HREF="#assign">assign</A>>] * ] ? </A>
32 <P><B><set></B>::= "ref" <<A HREF="#val">val</A>> </A><BR>
33
34 | "pattern" <<A HREF="#val">val</A>><BR>
35
36 | <<A HREF="#svar">svar</A>><BR>
37
38 | <<A HREF="#rvar">rvar</A>><BR>
39
40 | "(" <<A HREF="#set">set</A>> ")"<BR>
41
42 | "relation" <<A HREF="#qualifier">qualifier</A>> <<A HREF="#val">val</A>> <<A HREF="#attr_list">attr_list</A>><BR>
43
44 | "select" <<A HREF="#rvar">rvar</A>> "in" <<A HREF="#set">set</A>> "where" <<A HREF="#boole">boole</A>><BR>
45
46 | <<A HREF="#set">set</A>> [ "union" | "intersect" | "diff" ] <<A HREF="#set">set</A>><BR>
47
48 | "let" <<A HREF="#svar">svar</A>> "be" <<A HREF="#set">set</A>> "in" <<A HREF="#set">set</A>> <BR>
49
50 | "let" <<A HREF="#vvar">vvar</A>> "be" <<A HREF="#val">val</A>> "in" <<A HREF="#set">set</A>> <BR> </A>
52 <P><B><boole></B>::= [ "false" | "true" ] </A><BR>
53
54 | "(" <<A HREF="#boole">boole</A>> ")"<BR>
55
56 | [ "not" | "ex" ] <<A HREF="#boole">boole</A>> <BR>
57
58 | <<A HREF="#boole">boole</A>> [ "and" | "or" ] <<A HREF="#boole">boole</A>> <BR>
59
60 | <<A HREF="#val">val</A>> [ "sub" | "meet" | "eq" ] <<A HREF="#val">val</A>> <BR> </A>
62 <P><B><val></B>::= "{" [ <<A HREF="#string_list">string_list</A>> ] ? "}" </A><BR>
63
64 | <<A HREF="#string">string</A>><BR>
65
66 | "refof" <<A HREF="#set">set</A>><BR>
67
68 | <<A HREF="#rvar">rvar</A>> "." <<A HREF="#vvar">vvar</A>><BR>
69
70 | <<A HREF="#vvar">vvar</A>><BR>
71
72 | "(" <<A HREF="#val">val</A>> ")"<BR>
73
74 | "property" <<A HREF="#qualifier">qualifier</A>> <<A HREF="#val">val</A>></A>