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

SCM Repository

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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3390 - (view) (download)

1 : jhr 3352 (* keywords.sml
2 :     *
3 :     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 :     * All rights reserved.
7 :     *
8 :     * Diderot keywords.
9 :     *)
10 :    
11 :     structure Keywords : sig
12 :    
13 :     val idToken : string -> DiderotTokens.token
14 :    
15 :     end = struct
16 :    
17 :     structure T = DiderotTokens
18 :    
19 :     val keywords = [
20 :     ("bool", T.KW_bool),
21 : jhr 3390 ("collection", T.KW_collection),
22 :     ("const", T.KW_const),
23 : jhr 3352 ("continue", T.KW_continue),
24 :     ("die", T.KW_die),
25 :     ("else", T.KW_else),
26 :     ("false", T.KW_false),
27 :     ("field", T.KW_field),
28 :     ("foreach", T.KW_foreach),
29 :     ("function", T.KW_function),
30 : jhr 3390 ("global", T.KW_global), (* deprecated *)
31 :     ("grid", T.KW_grid),
32 : jhr 3352 ("identity", T.KW_identity),
33 :     ("if", T.KW_if),
34 :     ("image", T.KW_image),
35 :     ("in", T.KW_in),
36 :     ("inf", T.REAL RealLit.posInf),
37 :     ("initially", T.KW_initially),
38 :     ("input", T.KW_input),
39 :     ("int", T.KW_int),
40 :     ("kernel", T.KW_kernel),
41 :     ("load", T.KW_load),
42 : jhr 3390 ("mat2", T.KW_mat2),
43 :     ("mat3", T.KW_mat3),
44 :     ("mat4", T.KW_mat4),
45 : jhr 3352 ("nan", T.KW_nan),
46 :     ("new", T.KW_new),
47 :     ("output", T.KW_output),
48 :     ("print", T.KW_print),
49 :     ("real", T.KW_real),
50 :     ("return", T.KW_return),
51 :     ("stabilize", T.KW_stabilize),
52 :     ("strand", T.KW_strand),
53 :     ("string", T.KW_string),
54 :     ("tensor", T.KW_tensor),
55 :     ("true", T.KW_true),
56 :     ("update", T.KW_update),
57 :     ("vec2", T.KW_vec2),
58 :     ("vec3", T.KW_vec3),
59 :     ("vec4", T.KW_vec4),
60 :     ("zeros", T.KW_zeros)
61 :     ]
62 :    
63 :     (* create a keyword lookup table *)
64 :     local
65 :     fun mkFind kws = let
66 :     val tbl = AtomTable.mkTable (17, Fail "keywords")
67 :     fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok)
68 :     val find = AtomTable.find tbl
69 :     fun idToken id = let
70 :     val id = Atom.atom id
71 :     in
72 :     case find id
73 :     of NONE => T.ID id
74 :     | SOME kw => kw
75 :     (* end case *)
76 :     end
77 :     in
78 :     List.app ins kws;
79 :     idToken
80 :     end
81 :     in
82 :     (* return either a keyword token or an ID token *)
83 :     val idToken = mkFind keywords
84 :     end
85 :    
86 :     end

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