30 |
%nonterm description of S.group |
%nonterm description of S.group |
31 |
| alias of S.group |
| alias of S.group |
32 |
| group of S.group |
| group of S.group |
33 |
| perms of S.perms |
| permspec of S.permspec |
34 |
| lib_exports of S.exports |
| lib_exports of S.exports |
35 |
| exports of S.exports |
| exports of S.exports |
36 |
| export of S.exports |
| export of S.exports |
48 |
| cmpath of S.pathname |
| cmpath of S.pathname |
49 |
| nativepath of S.pathname |
| nativepath of S.pathname |
50 |
| sym of S.cm_symbol |
| sym of S.cm_symbol |
51 |
|
| word of S.cm_symbol |
52 |
|
|
53 |
%pos int |
%pos int |
54 |
%verbose |
%verbose |
56 |
S.context * |
S.context * |
57 |
(pos * pos -> string -> unit) * |
(pos * pos -> string -> unit) * |
58 |
(pos * pos -> S.pathname -> S.group) * |
(pos * pos -> S.pathname -> S.group) * |
59 |
(S.pathname * pos * pos * S.cm_symbol option -> S.members) |
(S.pathname * pos * pos * S.cm_symbol option * (string -> unit) |
60 |
|
-> S.members) |
61 |
%start description |
%start description |
62 |
%eop EOF |
%eop EOF |
63 |
%noshift EOF |
%noshift EOF |
86 |
(pathnameleft, pathnameright) |
(pathnameleft, pathnameright) |
87 |
pathname) |
pathname) |
88 |
|
|
89 |
group : perms GROUP exports IS members (S.group |
group : permspec GROUP exports IS members (S.group |
90 |
(perms, exports, members)) |
(permspec, exports, members)) |
91 |
| perms LIBRARY lib_exports IS members (S.library |
| permspec LIBRARY lib_exports IS members (S.library |
92 |
(perms, lib_exports, |
(permspec, lib_exports, |
93 |
members)) |
members)) |
94 |
|
|
95 |
perms : (* empty *) (S.initialPerms) |
permspec : (* empty *) (S.initialPermSpec) |
96 |
| perms sym (S.require (perms, sym, |
| permspec word (S.require (permspec, word, |
97 |
error (symleft, |
error (wordleft, |
98 |
symright))) |
wordright))) |
99 |
| perms LPAREN sym RPAREN (S.grant (perms, sym, |
| permspec LPAREN word RPAREN (S.grant (permspec, word, |
100 |
error (symleft, |
error (wordleft, |
101 |
symright))) |
wordright))) |
102 |
|
|
103 |
lib_exports : export exports (S.exports (export, exports)) |
lib_exports : export exports (S.exports (export, exports)) |
104 |
|
|
107 |
|
|
108 |
export : ml_symbol (S.export ml_symbol) |
export : ml_symbol (S.export ml_symbol) |
109 |
| IF exp guarded_exports (S.guarded_exports |
| IF exp guarded_exports (S.guarded_exports |
110 |
(exp, guarded_exports)) |
(exp, guarded_exports, |
111 |
| ERROR (S.error_export ERROR) |
error (expleft, expright))) |
112 |
|
| ERROR (S.error_export |
113 |
|
(fn () => |
114 |
|
error (ERRORleft, |
115 |
|
ERRORright) |
116 |
|
ERROR)) |
117 |
|
|
118 |
guarded_exports : exports else_exports ((exports, else_exports)) |
guarded_exports : exports else_exports ((exports, else_exports)) |
119 |
|
|
120 |
else_exports : ENDIF (S.emptyExports) |
else_exports : ENDIF (S.emptyExports) |
121 |
| ELSE exports ENDIF (exports) |
| ELSE exports ENDIF (exports) |
122 |
| ELIF exp guarded_exports (S.guarded_exports |
| ELIF exp guarded_exports (S.guarded_exports |
123 |
(exp, guarded_exports)) |
(exp, guarded_exports, |
124 |
|
error (expleft, expright))) |
125 |
|
|
126 |
members : (* empty *) (S.emptyMembers) |
members : (* empty *) (S.emptyMembers) |
127 |
| member members (S.members (member, members)) |
| member members (S.members (member, members)) |
129 |
member : pathname (doMember (pathname, |
member : pathname (doMember (pathname, |
130 |
pathnameleft, |
pathnameleft, |
131 |
pathnameright, |
pathnameright, |
132 |
NONE)) |
NONE, |
133 |
| pathname COLON sym (doMember (pathname, |
error |
134 |
|
(pathnameleft, |
135 |
|
pathnameright))) |
136 |
|
| pathname COLON word (doMember (pathname, |
137 |
pathnameleft, |
pathnameleft, |
138 |
pathnameright, |
pathnameright, |
139 |
SOME sym)) |
SOME word, |
140 |
|
error |
141 |
|
(pathnameleft, |
142 |
|
wordright))) |
143 |
| IF exp guarded_members (S.guarded_members |
| IF exp guarded_members (S.guarded_members |
144 |
(exp, guarded_members)) |
(exp, guarded_members, |
145 |
| ERROR (S.error_member ERROR) |
error (expleft, expright))) |
146 |
|
| ERROR (S.error_member |
147 |
|
(fn () => |
148 |
|
error (ERRORleft, |
149 |
|
ERRORright) |
150 |
|
ERROR)) |
151 |
|
|
152 |
guarded_members : members else_members ((members, else_members)) |
guarded_members : members else_members ((members, else_members)) |
153 |
|
|
154 |
else_members : ENDIF (S.emptyMembers) |
else_members : ENDIF (S.emptyMembers) |
155 |
| ELSE members ENDIF (members) |
| ELSE members ENDIF (members) |
156 |
| ELIF exp guarded_members (S.guarded_members |
| ELIF exp guarded_members (S.guarded_members |
157 |
(exp, guarded_members)) |
(exp, guarded_members, |
158 |
|
error (expleft, expright))) |
159 |
|
|
160 |
|
word : FILE_STANDARD (S.cm_symbol FILE_STANDARD) |
161 |
|
|
162 |
sym : CM_ID (S.cm_symbol CM_ID) |
sym : CM_ID (S.cm_symbol CM_ID) |
163 |
|
|