Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/cm/parse/cm.grm
ViewVC logotype

Annotation of /sml/trunk/src/cm/parse/cm.grm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (view) (download)

1 : blume 262 (* -*- sml -*- *)
2 :    
3 : blume 265 structure S = CMSemant
4 : blume 262
5 : blume 265 %%
6 : blume 262
7 :     %term EOF
8 : blume 265 | FILE_STANDARD of string
9 :     | FILE_NATIVE of string
10 :     | CM_ID of string
11 :     | ML_ID of string
12 : blume 262 | NUMBER of int
13 :     | ALIAS | GROUP | LIBRARY | IS
14 : blume 265 | LPAREN | RPAREN | COLON
15 : blume 262 | IF | THEN | ELIF | ELSE | ENDIF
16 :     | STRUCTURE | SIGNATURE | FUNCTOR | FUNSIG
17 :     | DEFINED
18 : blume 265 | PLUS | MINUS | TIMES | DIV | MOD | TILDE
19 : blume 262 | ANDALSO | ORELSE | NOT
20 :     | LT | LE | GT | GE | EQ | NE
21 :    
22 : blume 265 %nonterm description of S.group
23 :     | alias of S.group
24 :     | group of S.group
25 :     | opt_perms of S.perm list
26 :     | perms of S.perm list
27 :     | perm of S.perm
28 :     | lib_exports of S.exports
29 :     | exports of S.exports
30 :     | export of S.exports
31 :     | guarded_exports of S.exports * S.exports
32 :     | else_exports of S.exports
33 :     | members of S.members
34 :     | member of S.members
35 :     | guarded_members of S.members * S.members
36 :     | else_members of S.members
37 :     | aexp of S.aexp
38 :     | boolexp of S.exp
39 :     | exp of S.exp
40 :     | ml_symbol of S.ml_symbol
41 :     | pathname of S.pathname
42 :     | cmpath of S.pathname
43 :     | nativepath of S.pathname
44 :     | sym of S.cm_symbol
45 : blume 262
46 :     %pos int
47 :     %verbose
48 : blume 265 %arg (currentDir) : S.pathname
49 : blume 262 %start description
50 :     %eop EOF
51 :     %noshift EOF
52 :    
53 :     %name CM
54 :    
55 :     %keyword ALIAS GROUP LIBRARY IS IF THEN ELIF ELSE ENDIF DEFINED
56 :     STRUCTURE SIGNATURE FUNCTOR FUNSIG
57 :    
58 : blume 265 %prefer LPAREN
59 : blume 262
60 :     %left ORELSE
61 :     %left ANDALSO
62 :     %nonassoc LT LE GT GE
63 :     %nonassoc EQ NE
64 :     %left PLUS MINUS
65 :     %left TIMES DIV MOD
66 : blume 265 %left NOT TILDE
67 : blume 262
68 :     %%
69 :    
70 :     description : alias (alias)
71 :     | group (group)
72 :    
73 : blume 265 alias : ALIAS pathname (S.alias pathname)
74 : blume 262
75 : blume 265 group : GROUP
76 :     opt_perms exports IS members (S.group
77 :     (opt_perms, exports, members))
78 :     | LIBRARY
79 :     opt_perms lib_exports IS members (S.library
80 :     (opt_perms, lib_exports,
81 :     members))
82 : blume 262
83 : blume 265 opt_perms : (* empty *) ([])
84 :     | LPAREN perms RPAREN (perms)
85 : blume 262
86 : blume 265 perms : perm ([perm])
87 :     | perm perms (perm :: perms)
88 : blume 262
89 : blume 265 perm : sym (S.require sym)
90 :     | COLON sym (S.grant sym)
91 : blume 262
92 : blume 265 lib_exports : export exports (S.exports (export, exports))
93 : blume 262
94 : blume 265 exports : (* empty *) (S.emptyExports)
95 :     | export exports (S.exports (export, exports))
96 : blume 262
97 : blume 265 export : ml_symbol (S.export ml_symbol)
98 :     | IF exp guarded_exports (S.guarded_exports
99 :     (exp, guarded_exports))
100 :    
101 : blume 262 guarded_exports : THEN exports else_exports ((exports, else_exports))
102 :    
103 : blume 265 else_exports : ENDIF (S.emptyExports)
104 : blume 262 | ELSE exports ENDIF (exports)
105 : blume 265 | ELIF exp guarded_exports (S.guarded_exports
106 :     (exp, guarded_exports))
107 : blume 262
108 : blume 265 members : (* empty *) (S.emptyMembers)
109 :     | member members (S.members (member, members))
110 : blume 262
111 : blume 265 member : pathname (S.member (pathname, NONE))
112 :     | pathname COLON sym (S.member (pathname, SOME sym))
113 :     | IF exp guarded_members (S.guarded_members
114 :     (exp, guarded_members))
115 : blume 262
116 :     guarded_members : THEN members else_members ((members, else_members))
117 :    
118 : blume 265 else_members : ENDIF (S.emptyMembers)
119 : blume 262 | ELSE members ENDIF (members)
120 : blume 265 | ELIF exp guarded_members (S.guarded_members
121 :     (exp, guarded_members))
122 : blume 262
123 : blume 265 sym : CM_ID (S.cm_symbol CM_ID)
124 :    
125 : blume 262 exp : boolexp (boolexp)
126 :    
127 : blume 265 aexp : NUMBER (S.number NUMBER)
128 :     | sym (S.variable sym)
129 :     | LPAREN aexp RPAREN (aexp)
130 :     | aexp PLUS aexp (S.plus (aexp1, aexp2))
131 :     | aexp MINUS aexp (S.minus (aexp1, aexp2))
132 :     | aexp TIMES aexp (S.times (aexp1, aexp2))
133 :     | aexp DIV aexp (S.divide (aexp1, aexp2))
134 :     | aexp MOD aexp (S.modulus (aexp1, aexp2))
135 :     | TILDE aexp (S.negate aexp)
136 : blume 262
137 : blume 265 boolexp : DEFINED LPAREN ml_symbol RPAREN (S.ml_defined ml_symbol)
138 :     | DEFINED LPAREN sym RPAREN (S.cm_defined sym)
139 : blume 262 | LPAREN boolexp RPAREN (boolexp)
140 : blume 265 | boolexp ANDALSO boolexp (S.conj (boolexp1, boolexp2))
141 :     | boolexp ORELSE boolexp (S.disj (boolexp1, boolexp2))
142 :     | boolexp EQ boolexp (S.beq (boolexp1, boolexp2))
143 :     | boolexp NE boolexp (S.bne (boolexp1, boolexp2))
144 :     | NOT boolexp (S.not boolexp)
145 :     | aexp LT aexp (S.lt (aexp1, aexp2))
146 :     | aexp LE aexp (S.le (aexp1, aexp2))
147 :     | aexp GT aexp (S.gt (aexp1, aexp2))
148 :     | aexp GE aexp (S.ge (aexp1, aexp2))
149 :     | aexp EQ aexp (S.eq (aexp1, aexp2))
150 :     | aexp NE aexp (S.ne (aexp1, aexp2))
151 : blume 262
152 : blume 265 ml_symbol : STRUCTURE ML_ID (S.ml_structure ML_ID)
153 :     | SIGNATURE ML_ID (S.ml_signature ML_ID)
154 :     | FUNCTOR ML_ID (S.ml_functor ML_ID)
155 :     | FUNSIG ML_ID (S.ml_funsig ML_ID)
156 : blume 262
157 : blume 265 pathname : FILE_STANDARD (S.file_standard
158 :     (FILE_STANDARD, currentDir))
159 :     | FILE_NATIVE (S.file_native
160 :     (FILE_NATIVE, currentDir))

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0