SCM Repository
[diderot] / trunk / src / parser / keywords.sml |
View of /trunk/src/parser/keywords.sml
Parent Directory
|
Revision Log
Revision 48 -
(download)
(annotate)
Tue Apr 13 23:11:15 2010 UTC (12 years, 1 month ago) by jhr
File size: 1515 byte(s)
Tue Apr 13 23:11:15 2010 UTC (12 years, 1 month ago) by jhr
File size: 1515 byte(s)
Changed grammar to use different type 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), ("inf", T.FLOAT FloatLit.posInf), ("initially", T.KW_initially), ("input", T.KW_input), ("int", T.KW_int), ("kernel", T.KW_kernel), ("nan", T.FLOAT FloatLit.nan), ("new", T.KW_new), ("real", T.KW_real), ("stabilize", T.KW_stabilize), ("string", T.KW_string), ("tensor", T.KW_tensor), ("vec2", T.KW_vec2), ("vec3", T.KW_vec3), ("vec4", T.KW_vec4) ] (* 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 |