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

SCM Repository

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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 511 - (view) (download)

1 : jhr 26 (* keywords.sml
2 :     *
3 : jhr 435 * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4 : jhr 26 * 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 :     ("bool", T.KW_bool),
19 : jhr 39 ("D", T.KW_D),
20 : jhr 26 ("die", T.KW_die),
21 :     ("else", T.KW_else),
22 :     ("field", T.KW_field),
23 :     ("if", T.KW_if),
24 :     ("image", T.KW_image),
25 : jhr 40 ("in", T.KW_in),
26 : jhr 42 ("inf", T.FLOAT FloatLit.posInf),
27 : jhr 40 ("initially", T.KW_initially),
28 : jhr 26 ("input", T.KW_input),
29 :     ("int", T.KW_int),
30 :     ("kernel", T.KW_kernel),
31 : jhr 42 ("nan", T.FLOAT FloatLit.nan),
32 : jhr 26 ("new", T.KW_new),
33 : jhr 164 ("output", T.KW_output),
34 : jhr 26 ("real", T.KW_real),
35 :     ("stabilize", T.KW_stabilize),
36 : jhr 511 ("strand", T.KW_strand),
37 : jhr 26 ("string", T.KW_string),
38 :     ("tensor", T.KW_tensor),
39 : jhr 164 ("update", T.KW_update),
40 : jhr 48 ("vec2", T.KW_vec2),
41 :     ("vec3", T.KW_vec3),
42 :     ("vec4", T.KW_vec4)
43 : jhr 26 ]
44 :    
45 :     (* create a keyword lookup table *)
46 :     local
47 :     fun mkFind kws = let
48 :     val tbl = AtomTable.mkTable (17, Fail "keywords")
49 :     fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok)
50 :     val find = AtomTable.find tbl
51 :     fun idToken id = let
52 :     val id = Atom.atom id
53 :     in
54 :     case find id
55 :     of NONE => T.ID id
56 :     | SOME kw => kw
57 :     (* end case *)
58 :     end
59 :     in
60 :     List.app ins kws;
61 :     idToken
62 :     end
63 :     in
64 :     (* return either a keyword token or an ID token *)
65 :     val idToken = mkFind keywords
66 :     end
67 :    
68 :     end

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