Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /trunk/src/parser/keywords.sml
ViewVC logotype

Annotation of /trunk/src/parser/keywords.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 48 - (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