1 % This file was generated by 'rail' from 'logics.rai' |
1 % This file was generated by 'rail' from 'logics.rai' |
2 \rail@i {1}{ typedef : 'typedef' ( () | '(' name ')') type '=' set witness; \par type : typevarlist name ( () | '(' infix ')' ); set : string; witness : () | '(' id ')'; } |
2 \rail@i {1}{ typedef : 'typedef' ( () | '(' name ')') type '=' set witness; \par type : typevarlist name ( () | '(' infix ')' ); set : string; witness : () | '(' id ')'; } |
3 \rail@o {1}{ |
3 \rail@o {1}{ |
4 \rail@begin{2}{typedef} |
4 \rail@begin{2}{typedef} |
5 \rail@term{typedef} |
5 \rail@term{typedef}[] |
6 \rail@bar |
6 \rail@bar |
7 \rail@nextbar{1} |
7 \rail@nextbar{1} |
8 \rail@term{(} |
8 \rail@term{(}[] |
9 \rail@nont{name} |
9 \rail@nont{name}[] |
10 \rail@term{)} |
10 \rail@term{)}[] |
11 \rail@endbar |
11 \rail@endbar |
12 \rail@nont{type} |
12 \rail@nont{type}[] |
13 \rail@term{=} |
13 \rail@term{=}[] |
14 \rail@nont{set} |
14 \rail@nont{set}[] |
15 \rail@nont{witness} |
15 \rail@nont{witness}[] |
16 \rail@end |
16 \rail@end |
17 \rail@begin{2}{type} |
17 \rail@begin{2}{type} |
18 \rail@nont{typevarlist} |
18 \rail@nont{typevarlist}[] |
19 \rail@nont{name} |
19 \rail@nont{name}[] |
20 \rail@bar |
20 \rail@bar |
21 \rail@nextbar{1} |
21 \rail@nextbar{1} |
22 \rail@term{(} |
22 \rail@term{(}[] |
23 \rail@nont{infix} |
23 \rail@nont{infix}[] |
24 \rail@term{)} |
24 \rail@term{)}[] |
25 \rail@endbar |
25 \rail@endbar |
26 \rail@end |
26 \rail@end |
27 \rail@begin{1}{set} |
27 \rail@begin{1}{set} |
28 \rail@nont{string} |
28 \rail@nont{string}[] |
29 \rail@end |
29 \rail@end |
30 \rail@begin{2}{witness} |
30 \rail@begin{2}{witness} |
31 \rail@bar |
31 \rail@bar |
32 \rail@nextbar{1} |
32 \rail@nextbar{1} |
33 \rail@term{(} |
33 \rail@term{(}[] |
34 \rail@nont{id} |
34 \rail@nont{id}[] |
35 \rail@term{)} |
35 \rail@term{)}[] |
36 \rail@endbar |
36 \rail@endbar |
37 \rail@end |
37 \rail@end |
38 } |
38 } |
39 \rail@i {2}{ record : 'record' typevarlist name '=' parent (field +); \par parent : ( () | type '+'); field : name '::' type; } |
39 \rail@i {2}{ record : 'record' typevarlist name '=' parent (field +); \par parent : ( () | type '+'); field : name '::' type; } |
40 \rail@o {2}{ |
40 \rail@o {2}{ |
41 \rail@begin{2}{record} |
41 \rail@begin{2}{record} |
42 \rail@term{record} |
42 \rail@term{record}[] |
43 \rail@nont{typevarlist} |
43 \rail@nont{typevarlist}[] |
44 \rail@nont{name} |
44 \rail@nont{name}[] |
45 \rail@term{=} |
45 \rail@term{=}[] |
46 \rail@nont{parent} |
46 \rail@nont{parent}[] |
47 \rail@plus |
47 \rail@plus |
48 \rail@nont{field} |
48 \rail@nont{field}[] |
49 \rail@nextplus{1} |
49 \rail@nextplus{1} |
50 \rail@endplus |
50 \rail@endplus |
51 \rail@end |
51 \rail@end |
52 \rail@begin{2}{parent} |
52 \rail@begin{2}{parent} |
53 \rail@bar |
53 \rail@bar |
54 \rail@nextbar{1} |
54 \rail@nextbar{1} |
55 \rail@nont{type} |
55 \rail@nont{type}[] |
56 \rail@term{+} |
56 \rail@term{+}[] |
57 \rail@endbar |
57 \rail@endbar |
58 \rail@end |
58 \rail@end |
59 \rail@begin{1}{field} |
59 \rail@begin{1}{field} |
60 \rail@nont{name} |
60 \rail@nont{name}[] |
61 \rail@term{::} |
61 \rail@term{::}[] |
62 \rail@nont{type} |
62 \rail@nont{type}[] |
63 \rail@end |
63 \rail@end |
64 } |
64 } |
65 \rail@i {3}{ datatype : 'datatype' typedecls; \par typedecls: ( newtype '=' (cons + '|') ) + 'and' ; newtype : typevarlist id ( () | '(' infix ')' ) ; cons : name (argtype *) ( () | ( '(' mixfix ')' ) ) ; argtype : id | tid | ('(' typevarlist id ')') ; } |
65 \rail@i {3}{ datatype : 'datatype' typedecls; \par typedecls: ( newtype '=' (cons + '|') ) + 'and' ; newtype : typevarlist id ( () | '(' infix ')' ) ; cons : name (argtype *) ( () | ( '(' mixfix ')' ) ) ; argtype : id | tid | ('(' typevarlist id ')') ; } |
66 \rail@o {3}{ |
66 \rail@o {3}{ |
67 \rail@begin{1}{datatype} |
67 \rail@begin{1}{datatype} |
68 \rail@term{datatype} |
68 \rail@term{datatype}[] |
69 \rail@nont{typedecls} |
69 \rail@nont{typedecls}[] |
70 \rail@end |
70 \rail@end |
71 \rail@begin{3}{typedecls} |
71 \rail@begin{3}{typedecls} |
72 \rail@plus |
72 \rail@plus |
73 \rail@nont{newtype} |
73 \rail@nont{newtype}[] |
74 \rail@term{=} |
74 \rail@term{=}[] |
75 \rail@plus |
75 \rail@plus |
76 \rail@nont{cons} |
76 \rail@nont{cons}[] |
77 \rail@nextplus{1} |
77 \rail@nextplus{1} |
78 \rail@cterm{|} |
78 \rail@cterm{|}[] |
79 \rail@endplus |
79 \rail@endplus |
80 \rail@nextplus{2} |
80 \rail@nextplus{2} |
81 \rail@cterm{and} |
81 \rail@cterm{and}[] |
82 \rail@endplus |
82 \rail@endplus |
83 \rail@end |
83 \rail@end |
84 \rail@begin{2}{newtype} |
84 \rail@begin{2}{newtype} |
85 \rail@nont{typevarlist} |
85 \rail@nont{typevarlist}[] |
86 \rail@nont{id} |
86 \rail@nont{id}[] |
87 \rail@bar |
87 \rail@bar |
88 \rail@nextbar{1} |
88 \rail@nextbar{1} |
89 \rail@term{(} |
89 \rail@term{(}[] |
90 \rail@nont{infix} |
90 \rail@nont{infix}[] |
91 \rail@term{)} |
91 \rail@term{)}[] |
92 \rail@endbar |
92 \rail@endbar |
93 \rail@end |
93 \rail@end |
94 \rail@begin{3}{cons} |
94 \rail@begin{3}{cons} |
95 \rail@nont{name} |
95 \rail@nont{name}[] |
96 \rail@bar |
96 \rail@bar |
97 \rail@nextbar{1} |
97 \rail@nextbar{1} |
98 \rail@plus |
98 \rail@plus |
99 \rail@nont{argtype} |
99 \rail@nont{argtype}[] |
100 \rail@nextplus{2} |
100 \rail@nextplus{2} |
101 \rail@endplus |
101 \rail@endplus |
102 \rail@endbar |
102 \rail@endbar |
103 \rail@bar |
103 \rail@bar |
104 \rail@nextbar{1} |
104 \rail@nextbar{1} |
105 \rail@term{(} |
105 \rail@term{(}[] |
106 \rail@nont{mixfix} |
106 \rail@nont{mixfix}[] |
107 \rail@term{)} |
107 \rail@term{)}[] |
108 \rail@endbar |
108 \rail@endbar |
109 \rail@end |
109 \rail@end |
110 \rail@begin{3}{argtype} |
110 \rail@begin{3}{argtype} |
111 \rail@bar |
111 \rail@bar |
112 \rail@nont{id} |
112 \rail@nont{id}[] |
113 \rail@nextbar{1} |
113 \rail@nextbar{1} |
114 \rail@nont{tid} |
114 \rail@nont{tid}[] |
115 \rail@nextbar{2} |
115 \rail@nextbar{2} |
116 \rail@term{(} |
116 \rail@term{(}[] |
117 \rail@nont{typevarlist} |
117 \rail@nont{typevarlist}[] |
118 \rail@nont{id} |
118 \rail@nont{id}[] |
119 \rail@term{)} |
119 \rail@term{)}[] |
120 \rail@endbar |
120 \rail@endbar |
121 \rail@end |
121 \rail@end |
122 } |
122 } |