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 3349 - (view) (download)

1 : jhr 26 (* keywords.sml
2 :     *
3 : jhr 3349 * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 : jhr 26 * 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 : jhr 33 structure T = DiderotTokens
18 : jhr 26
19 :     val keywords = [
20 : jhr 2356 ("bool", T.KW_bool),
21 :     ("die", T.KW_die),
22 :     ("else", T.KW_else),
23 :     ("false", T.KW_false),
24 :     ("field", T.KW_field),
25 :     ("function", T.KW_function),
26 :     ("identity", T.KW_identity),
27 :     ("if", T.KW_if),
28 :     ("image", T.KW_image),
29 :     ("in", T.KW_in),
30 :     ("inf", T.FLOAT FloatLit.posInf),
31 :     ("initially", T.KW_initially),
32 :     ("input", T.KW_input),
33 :     ("int", T.KW_int),
34 :     ("kernel", T.KW_kernel),
35 : jhr 2636 ("load", T.KW_load),
36 : jhr 2356 ("nan", T.FLOAT FloatLit.nan),
37 :     ("new", T.KW_new),
38 :     ("output", T.KW_output),
39 : jhr 1640 ("print", T.KW_print),
40 : jhr 2356 ("real", T.KW_real),
41 :     ("return", T.KW_return),
42 :     ("stabilize", T.KW_stabilize),
43 :     ("strand", T.KW_strand),
44 :     ("string", T.KW_string),
45 :     ("tensor", T.KW_tensor),
46 :     ("true", T.KW_true),
47 :     ("update", T.KW_update),
48 :     ("vec2", T.KW_vec2),
49 :     ("vec3", T.KW_vec3),
50 :     ("vec4", T.KW_vec4),
51 :     ("zeros", T.KW_zeros)
52 :     ]
53 : jhr 26
54 :     (* create a keyword lookup table *)
55 :     local
56 :     fun mkFind kws = let
57 : jhr 2356 val tbl = AtomTable.mkTable (17, Fail "keywords")
58 :     fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok)
59 :     val find = AtomTable.find tbl
60 :     fun idToken id = let
61 :     val id = Atom.atom id
62 :     in
63 :     case find id
64 :     of NONE => T.ID id
65 :     | SOME kw => kw
66 :     (* end case *)
67 :     end
68 :     in
69 :     List.app ins kws;
70 :     idToken
71 :     end
72 : jhr 26 in
73 :     (* return either a keyword token or an ID token *)
74 :     val idToken = mkFind keywords
75 :     end
76 :    
77 :     end

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