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 26 - (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 :     structure T = ManticoreTokens
16 :    
17 :     val keywords = [
18 :     ("actor", T.KW_actor),
19 :     ("bool", T.KW_bool),
20 :     ("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 :     ("input", T.KW_input),
26 :     ("int", T.KW_int),
27 :     ("kernel", T.KW_kernel),
28 :     ("new", T.KW_new),
29 :     ("real", T.KW_real),
30 :     ("stabilize", T.KW_stabilize),
31 :     ("string", T.KW_string),
32 :     ("tensor", T.KW_tensor),
33 :     ("vec", T.KW_vec)
34 :     ]
35 :    
36 :     (* create a keyword lookup table *)
37 :     local
38 :     fun mkFind kws = let
39 :     val tbl = AtomTable.mkTable (17, Fail "keywords")
40 :     fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok)
41 :     val find = AtomTable.find tbl
42 :     fun idToken id = let
43 :     val id = Atom.atom id
44 :     in
45 :     case find id
46 :     of NONE => T.ID id
47 :     | SOME kw => kw
48 :     (* end case *)
49 :     end
50 :     in
51 :     List.app ins kws;
52 :     idToken
53 :     end
54 :     in
55 :     (* return either a keyword token or an ID token *)
56 :     val idToken = mkFind keywords
57 :     end
58 :    
59 :     end

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