Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/ckit/src/parser/grammar/tokentable.sml
ViewVC logotype

Diff of /sml/trunk/ckit/src/parser/grammar/tokentable.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 597, Wed Apr 5 18:34:51 2000 UTC revision 802, Thu Mar 22 19:08:43 2001 UTC
# Line 26  Line 26 
26    val _ = let    val _ = let
27      val insert = AtomTable.insert keywords      val insert = AtomTable.insert keywords
28      fun ins (s, item) = insert (Atom.atom s, item)      fun ins (s, item) = insert (Atom.atom s, item)
29    
30        (* to enter GCC-style 'underscore'-versions of certain keywords *)
31        fun insaug (s, item) = let
32            fun item' p = if ParseControl.underscoreKeywords then item p
33                          else (ParseControl.violation
34                                (concat ["gcc-style keywords '__", s, "' or '__",
35                                         s, "__' are not allowed"]);
36                                raise LexError)
37    in    in
38      app ins ([          ins ("__" ^ s, item');
39            ins ("__" ^ s ^ "__", item')
40        end
41    
42        val normaltokens =
43            [("auto", Tokens.AUTO),
44             ("extern", Tokens.EXTERN),
45             ("register", Tokens.REGISTER),
46             ("static", Tokens.STATIC),
47             ("unsigned", Tokens.UNSIGNED),
48                ("break", Tokens.BREAK),                ("break", Tokens.BREAK),
49                ("case", Tokens.CASE),                ("case", Tokens.CASE),
50                ("continue", Tokens.CONTINUE),                ("continue", Tokens.CONTINUE),
51                ("default", Tokens.DEFAULT),                ("default", Tokens.DEFAULT),
52                ("do", Tokens.DO),                ("do", Tokens.DO),
53                ("else", Tokens.ELSE),                ("else", Tokens.ELSE),
               ("auto", Tokens.AUTO),  
               ("extern", Tokens.EXTERN),  
               ("register", Tokens.REGISTER),  
               ("static", Tokens.STATIC),  
54                ("for", Tokens.FOR),                ("for", Tokens.FOR),
55                ("goto", Tokens.GOTO),                ("goto", Tokens.GOTO),
56                ("if", Tokens.IF),                ("if", Tokens.IF),
               ("char", Tokens.CHAR),  
               ("double", Tokens.DOUBLE),  
57                ("enum", Tokens.ENUM),                ("enum", Tokens.ENUM),
58                ("float", Tokens.FLOAT),                ("float", Tokens.FLOAT),
59             ("double", Tokens.DOUBLE),
60             ("char", Tokens.CHAR),
61                ("int", Tokens.INT),                ("int", Tokens.INT),
62                ("long", Tokens.LONG),                ("long", Tokens.LONG),
63                ("short", Tokens.SHORT),                ("short", Tokens.SHORT),
64                ("struct", Tokens.STRUCT),                ("struct", Tokens.STRUCT),
65                ("union", Tokens.UNION),                ("union", Tokens.UNION),
               ("unsigned", Tokens.UNSIGNED),  
               ("signed", Tokens.SIGNED),  
               ("const", fn p => if ParseControl.constAllowed  
                                   then (Tokens.CONST p)  
                                 else (ParseControl.violation "the keyword 'const' not allowed";  
                                       raise LexError)),  
               ("volatile", fn p => if ParseControl.volatileAllowed  
                                      then (Tokens.VOLATILE p)  
                                    else (ParseControl.violation "the keyword 'volatile' not allowed";  
                                          raise LexError)),  
66                ("void", Tokens.VOID),                ("void", Tokens.VOID),
67                ("sizeof", Tokens.SIZEOF),                ("sizeof", Tokens.SIZEOF),
68                ("typedef", Tokens.TYPEDEF),                ("typedef", Tokens.TYPEDEF),
69                ("return", Tokens.RETURN),                ("return", Tokens.RETURN),
70                ("switch", Tokens.SWITCH),                ("switch", Tokens.SWITCH),
71                ("while", Tokens.WHILE)           ("while", Tokens.WHILE)]
72                ] @  
73                (if ParseControl.Dkeywords then      (* tokens for which gcc has __* and __*__ versions *)
74        val augmentabletokens =
75            [("signed", Tokens.SIGNED),
76             ("const", fn p => if ParseControl.constAllowed
77                                   then (Tokens.CONST p)
78                               else (ParseControl.violation
79                                     "the keyword 'const' not allowed";
80                                     raise LexError)),
81             ("volatile", fn p => if ParseControl.volatileAllowed
82                                      then (Tokens.VOLATILE p)
83                                  else (ParseControl.violation
84                                        "the keyword 'volatile' not allowed";
85                                        raise LexError))]
86    
87                  (* tokens for D *)                  (* tokens for D *)
88        val dtokens =
89                  [                  [
90                   ]                   ]
91                else nil))    in
92          app ins normaltokens;
93          app ins augmentabletokens;
94          app insaug augmentabletokens;
95          (* enter D keywords only when allowed...
96           * (I think the ParseControl test is done at the wrong time here.
97           *  - Blume) *)
98          if ParseControl.Dkeywords then app ins dtokens else ()
99    end    end
100    
101    fun checkToken (s, pos) = let    fun checkToken (s, pos) = let

Legend:
Removed from v.597  
changed lines
  Added in v.802

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