SCM Repository
Annotation of /trunk/src/compiler/parser/keywords.sml
Parent Directory
|
Revision Log
Revision 110 - (view) (download)
1 : | jhr | 26 | (* keywords.sml |
2 : | * | ||
3 : | * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu) | ||
4 : | * All rights reserved. | ||
5 : | * | ||
6 : | * Diderot keywords. | ||
7 : | *) | ||
8 : | |||
9 : | structure Keywords : sig | ||
10 : | |||
11 : | val idToken : string -> DiderotTokens.token | ||
12 : | |||
13 : | end = struct | ||
14 : | |||
15 : | jhr | 33 | structure T = DiderotTokens |
16 : | jhr | 26 | |
17 : | val keywords = [ | ||
18 : | ("actor", T.KW_actor), | ||
19 : | ("bool", T.KW_bool), | ||
20 : | jhr | 39 | ("D", T.KW_D), |
21 : | jhr | 26 | ("die", T.KW_die), |
22 : | ("else", T.KW_else), | ||
23 : | ("field", T.KW_field), | ||
24 : | ("if", T.KW_if), | ||
25 : | ("image", T.KW_image), | ||
26 : | jhr | 40 | ("in", T.KW_in), |
27 : | jhr | 42 | ("inf", T.FLOAT FloatLit.posInf), |
28 : | jhr | 40 | ("initially", T.KW_initially), |
29 : | jhr | 26 | ("input", T.KW_input), |
30 : | ("int", T.KW_int), | ||
31 : | ("kernel", T.KW_kernel), | ||
32 : | jhr | 42 | ("nan", T.FLOAT FloatLit.nan), |
33 : | jhr | 26 | ("new", T.KW_new), |
34 : | ("real", T.KW_real), | ||
35 : | ("stabilize", T.KW_stabilize), | ||
36 : | ("string", T.KW_string), | ||
37 : | ("tensor", T.KW_tensor), | ||
38 : | jhr | 48 | ("vec2", T.KW_vec2), |
39 : | ("vec3", T.KW_vec3), | ||
40 : | ("vec4", T.KW_vec4) | ||
41 : | jhr | 26 | ] |
42 : | |||
43 : | (* create a keyword lookup table *) | ||
44 : | local | ||
45 : | fun mkFind kws = let | ||
46 : | val tbl = AtomTable.mkTable (17, Fail "keywords") | ||
47 : | fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok) | ||
48 : | val find = AtomTable.find tbl | ||
49 : | fun idToken id = let | ||
50 : | val id = Atom.atom id | ||
51 : | in | ||
52 : | case find id | ||
53 : | of NONE => T.ID id | ||
54 : | | SOME kw => kw | ||
55 : | (* end case *) | ||
56 : | end | ||
57 : | in | ||
58 : | List.app ins kws; | ||
59 : | idToken | ||
60 : | end | ||
61 : | in | ||
62 : | (* return either a keyword token or an ID token *) | ||
63 : | val idToken = mkFind keywords | ||
64 : | end | ||
65 : | |||
66 : | end |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |