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/semant/semant.sml
ViewVC logotype

Annotation of /sml/trunk/src/cm/semant/semant.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (view) (download)

1 : blume 265 signature CM_SEMANT = sig
2 :    
3 :     type pathname
4 :     type ml_symbol
5 :     type cm_symbol
6 :    
7 :     type group
8 :    
9 :     type perm
10 :     type aexp
11 :     type exp
12 :     type members (* still conditional *)
13 :     type exports (* still conditional *)
14 :    
15 :     val file_native : string * pathname -> pathname
16 :     val file_standard : string * pathname -> pathname
17 :     val cm_symbol : string -> cm_symbol
18 :     val ml_structure : string -> ml_symbol
19 :     val ml_signature : string -> ml_symbol
20 :     val ml_functor : string -> ml_symbol
21 :     val ml_funsig : string -> ml_symbol
22 :    
23 :     val alias : pathname -> group
24 :     val group : perm list * exports * members -> group
25 :     val library : perm list * exports * members -> group
26 :    
27 :     val require : cm_symbol -> perm
28 :     val grant : cm_symbol -> perm
29 :    
30 :     val emptyMembers : members
31 :     val member : pathname * cm_symbol option -> members
32 :     val members : members * members -> members
33 :     val guarded_members : exp * (members * members) -> members
34 :    
35 :     val emptyExports : exports
36 :     val export : ml_symbol -> exports
37 :     val exports : exports * exports -> exports
38 :     val guarded_exports : exp * (exports * exports) -> exports
39 :    
40 :     val number : int -> aexp
41 :     val variable : cm_symbol -> aexp
42 :     val plus : aexp * aexp -> aexp
43 :     val minus : aexp * aexp -> aexp
44 :     val times : aexp * aexp -> aexp
45 :     val divide : aexp * aexp -> aexp
46 :     val modulus : aexp * aexp -> aexp
47 :     val negate : aexp -> aexp
48 :    
49 :     val ml_defined : ml_symbol -> exp
50 :     val cm_defined : cm_symbol -> exp
51 :     val conj : exp * exp -> exp
52 :     val disj : exp * exp -> exp
53 :     val beq : exp * exp -> exp
54 :     val bne : exp * exp -> exp
55 :     val not : exp -> exp
56 :     val lt : aexp * aexp -> exp
57 :     val le : aexp * aexp -> exp
58 :     val gt : aexp * aexp -> exp
59 :     val ge : aexp * aexp -> exp
60 :     val eq : aexp * aexp -> exp
61 :     val ne : aexp * aexp -> exp
62 :    
63 :     end
64 :    
65 :     structure CMSemant :> CM_SEMANT = struct
66 :    
67 :     type pathname = AbsPath.t
68 :     type ml_symbol = unit
69 :     type cm_symbol = string
70 :    
71 :     type group = unit
72 :    
73 :     type environment = unit
74 :     fun num_look () _ = 0
75 :     fun ml_look () _ = false
76 :     fun cm_look () _ = false
77 :    
78 :     datatype perm =
79 :     REQUIRE of cm_symbol
80 :     | GRANT of cm_symbol
81 :    
82 :     type aexp = environment -> int
83 :     type exp = environment -> bool
84 :     type members = unit
85 :     type exports = unit
86 :    
87 :     fun file_native (s, d) = AbsPath.native { context = d, spec = s }
88 :     fun file_standard (s, d) = AbsPath.standard { context = d, spec = s }
89 :     fun cm_symbol s = s
90 :     fun ml_structure (s: string) = ()
91 :     fun ml_signature (s: string) = ()
92 :     fun ml_functor (s: string) = ()
93 :     fun ml_funsig (s: string) = ()
94 :    
95 :     fun alias (f: pathname) = ()
96 :     fun group (p: perm list, e: exports, m: members) = ()
97 :     fun library (p: perm list, e: exports, m: members) = ()
98 :    
99 :     val require = REQUIRE
100 :     val grant = GRANT
101 :    
102 :     val emptyMembers = ()
103 :     fun member (f: pathname, c: cm_symbol option) = ()
104 :     fun members (m1: members, m2: members) = ()
105 :     fun guarded_members (c: exp, (m1: members, m2: members)) = ()
106 :    
107 :     val emptyExports = ()
108 :     fun export (s: ml_symbol) = ()
109 :     fun exports (e1: exports, e2: exports) = ()
110 :     fun guarded_exports (c: exp, (e1: exports, e2: exports)) = ()
111 :    
112 :     fun number i _ = i
113 :     fun variable v e = num_look e v
114 :     fun plus (e1, e2) e = e1 e + e2 e
115 :     fun minus (e1, e2) e = e1 e - e2 e
116 :     fun times (e1, e2) e = e1 e * e2 e
117 :     fun divide (e1, e2) e = e1 e div e2 e
118 :     fun modulus (e1, e2) e = e1 e mod e2 e
119 :     fun negate ex e = ~(ex e)
120 :    
121 :     fun ml_defined s e = ml_look e s
122 :     fun cm_defined s e = cm_look e s
123 :     fun conj (e1, e2) e = e1 e andalso e2 e
124 :     fun disj (e1, e2) e = e1 e orelse e2 e
125 :     fun beq (e1: exp, e2) e = e1 e = e2 e
126 :     fun bne (e1: exp, e2) e = e1 e <> e2 e
127 :     fun not ex e = Bool.not (ex e)
128 :     fun lt (e1, e2) e = e1 e < e2 e
129 :     fun le (e1, e2) e = e1 e <= e2 e
130 :     fun gt (e1, e2) e = e1 e > e2 e
131 :     fun ge (e1, e2) e = e1 e >= e2 e
132 :     fun eq (e1: aexp, e2) e = e1 e = e2 e
133 :     fun ne (e1: aexp, e2) e = e1 e <> e2 e
134 :     end

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