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

SCM Repository

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

Annotation of /branches/lamont/src/compiler/parser/keywords.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2101 - (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 : lamonts 2101 ("active", T.KW_active),
19 :     ("and", T.KW_and),
20 : jhr 26 ("bool", T.KW_bool),
21 : lamonts 2098 ("dead", T.KW_dead),
22 : jhr 26 ("die", T.KW_die),
23 :     ("else", T.KW_else),
24 : jhr 1116 ("false", T.KW_false),
25 : jhr 26 ("field", T.KW_field),
26 : lamonts 2083 ("foreach", T.KW_foreach),
27 : jhr 1116 ("identity", T.KW_identity),
28 : jhr 26 ("if", T.KW_if),
29 :     ("image", T.KW_image),
30 : jhr 40 ("in", T.KW_in),
31 : jhr 42 ("inf", T.FLOAT FloatLit.posInf),
32 : jhr 40 ("initially", T.KW_initially),
33 : jhr 26 ("input", T.KW_input),
34 :     ("int", T.KW_int),
35 :     ("kernel", T.KW_kernel),
36 : jhr 1926 ("load", T.KW_load),
37 : lamonts 2095 ("max", T.KW_max),
38 :     ("min", T.KW_min),
39 : jhr 42 ("nan", T.FLOAT FloatLit.nan),
40 : jhr 26 ("new", T.KW_new),
41 : lamonts 2095 ("or", T.KW_or),
42 : jhr 164 ("output", T.KW_output),
43 : jhr 1640 ("print", T.KW_print),
44 : lamonts 2095 ("product", T.KW_product),
45 : jhr 26 ("real", T.KW_real),
46 :     ("stabilize", T.KW_stabilize),
47 : lamonts 2098 ("stable", T.KW_stable),
48 : jhr 511 ("strand", T.KW_strand),
49 : jhr 26 ("string", T.KW_string),
50 : lamonts 2083 ("sphere", T.KW_sphere),
51 : lamonts 2095 ("sum", T.KW_sum),
52 : jhr 26 ("tensor", T.KW_tensor),
53 : jhr 1116 ("true", T.KW_true),
54 : jhr 164 ("update", T.KW_update),
55 : jhr 48 ("vec2", T.KW_vec2),
56 :     ("vec3", T.KW_vec3),
57 : jhr 1116 ("vec4", T.KW_vec4),
58 : lamonts 2095 ("xor", T.KW_xor),
59 : jhr 1116 ("zeros", T.KW_zeros)
60 : jhr 26 ]
61 :    
62 :     (* create a keyword lookup table *)
63 :     local
64 :     fun mkFind kws = let
65 :     val tbl = AtomTable.mkTable (17, Fail "keywords")
66 :     fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok)
67 :     val find = AtomTable.find tbl
68 :     fun idToken id = let
69 :     val id = Atom.atom id
70 :     in
71 :     case find id
72 :     of NONE => T.ID id
73 :     | SOME kw => kw
74 :     (* end case *)
75 :     end
76 :     in
77 :     List.app ins kws;
78 :     idToken
79 :     end
80 :     in
81 :     (* return either a keyword token or an ID token *)
82 :     val idToken = mkFind keywords
83 :     end
84 :    
85 :     end

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