SCM Repository
[diderot] / trunk / src / parser / keywords.sml |
View of /trunk/src/parser/keywords.sml
Parent Directory
|
Revision Log
Revision 40 -
(download)
(annotate)
Wed Mar 3 14:51:38 2010 UTC (12 years, 4 months ago) by jhr
File size: 1382 byte(s)
Wed Mar 3 14:51:38 2010 UTC (12 years, 4 months ago) by jhr
File size: 1382 byte(s)
Added intialization syntax
(* keywords.sml * * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu) * All rights reserved. * * Diderot keywords. *) structure Keywords : sig val idToken : string -> DiderotTokens.token end = struct structure T = DiderotTokens val keywords = [ ("actor", T.KW_actor), ("bool", T.KW_bool), ("D", T.KW_D), ("die", T.KW_die), ("else", T.KW_else), ("field", T.KW_field), ("if", T.KW_if), ("image", T.KW_image), ("in", T.KW_in), ("initially", T.KW_initially), ("input", T.KW_input), ("int", T.KW_int), ("kernel", T.KW_kernel), ("new", T.KW_new), ("real", T.KW_real), ("stabilize", T.KW_stabilize), ("string", T.KW_string), ("tensor", T.KW_tensor), ("vec", T.KW_vec) ] (* create a keyword lookup table *) local fun mkFind kws = let val tbl = AtomTable.mkTable (17, Fail "keywords") fun ins (id, tok) = AtomTable.insert tbl (Atom.atom id, tok) val find = AtomTable.find tbl fun idToken id = let val id = Atom.atom id in case find id of NONE => T.ID id | SOME kw => kw (* end case *) end in List.app ins kws; idToken end in (* return either a keyword token or an ID token *) val idToken = mkFind keywords end end
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |