Mercurial > projects > dang
annotate lexer/Keyword.d @ 146:8c09fdaa724e
Parsing for-loop.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Mon, 21 Jul 2008 18:16:50 +0200 |
parents | 927ae00bd9d2 |
children | 6ec686d9c87d |
rev | line source |
---|---|
1 | 1 module lexer.Keyword; |
2 | |
3 import lexer.Token; | |
4 | |
42
4e879f82dd64
Added some docs for the lexer - now you can understand _some_ of the madness going on here :)
Anders Johnsen <skabet@gmail.com>
parents:
37
diff
changeset
|
5 /** |
4e879f82dd64
Added some docs for the lexer - now you can understand _some_ of the madness going on here :)
Anders Johnsen <skabet@gmail.com>
parents:
37
diff
changeset
|
6 A list of keywords in an associative array that link a string |
4e879f82dd64
Added some docs for the lexer - now you can understand _some_ of the madness going on here :)
Anders Johnsen <skabet@gmail.com>
parents:
37
diff
changeset
|
7 representation of the keyword to a Tok |
4e879f82dd64
Added some docs for the lexer - now you can understand _some_ of the madness going on here :)
Anders Johnsen <skabet@gmail.com>
parents:
37
diff
changeset
|
8 */ |
1 | 9 Tok[char[]] keywords; |
10 | |
11 static this () | |
12 { | |
13 keywords = | |
14 [ | |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
15 // types |
1 | 16 "byte"[] : Tok.Byte, |
17 "ubyte" : Tok.Ubyte, | |
18 "short" : Tok.Short, | |
19 "ushort" : Tok.Ushort, | |
20 "int" : Tok.Int, | |
21 "uint" : Tok.Uint, | |
22 "long" : Tok.Long, | |
23 "ulong" : Tok.Ulong, | |
24 | |
103
09b4d74cb3f5
Parsing char, wchar and dchar as basic types.
Anders Johnsen <skabet@gmail.com>
parents:
94
diff
changeset
|
25 "char" : Tok.Char, |
09b4d74cb3f5
Parsing char, wchar and dchar as basic types.
Anders Johnsen <skabet@gmail.com>
parents:
94
diff
changeset
|
26 "wchar" : Tok.Wchar, |
09b4d74cb3f5
Parsing char, wchar and dchar as basic types.
Anders Johnsen <skabet@gmail.com>
parents:
94
diff
changeset
|
27 "dchar" : Tok.Dchar, |
09b4d74cb3f5
Parsing char, wchar and dchar as basic types.
Anders Johnsen <skabet@gmail.com>
parents:
94
diff
changeset
|
28 |
12
6282db07115f
Added some ekstra tests, and allowed bool as a type
Anders Halager <halager@gmail.com>
parents:
11
diff
changeset
|
29 "bool" : Tok.Bool, |
6282db07115f
Added some ekstra tests, and allowed bool as a type
Anders Halager <halager@gmail.com>
parents:
11
diff
changeset
|
30 |
1 | 31 "float" : Tok.Float, |
32 "double" : Tok.Double, | |
33 | |
37 | 34 "void" : Tok.Void, |
35 | |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
36 // type related |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
37 "struct" : Tok.Struct, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
38 "function" : Tok.Function, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
39 "delegate" : Tok.Delegate, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
40 "class" : Tok.Class, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
41 "interface" : Tok.Interface, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
42 "union" : Tok.Union, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
43 "typedef" : Tok.Typedef, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
44 "typeid" : Tok.Typeid, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
45 "typeof" : Tok.Typeof, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
46 "sizeof" : Tok.Sizeof, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
47 "alias" : Tok.Alias, |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
48 |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
49 // control flow |
5
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
50 "if" : Tok.If, |
11
642c6a998fd9
Support for while statements and fixed scope for if
Anders Halager <halager@gmail.com>
parents:
5
diff
changeset
|
51 "else" : Tok.Else, |
642c6a998fd9
Support for while statements and fixed scope for if
Anders Halager <halager@gmail.com>
parents:
5
diff
changeset
|
52 "while" : Tok.While, |
146 | 53 "for" : Tok.For, |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
54 "switch" : Tok.Switch, |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
55 "case" : Tok.Case, |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
56 "default" : Tok.Default, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
57 "break" : Tok.Break, |
68
381975d76baf
A LOT of bug fixing - also implemented implicit casts. If you do a --ast-dump-code on a target with some algebra of differant types, you should now see the type casts being made. Also, Tests are again back with only switches failing...
Anders Johnsen <skabet@gmail.com>
parents:
42
diff
changeset
|
58 "return" : Tok.Return, |
94
48bb2287c035
Added Modules. Right now it's very simple - will grow with time and need.
Anders Johnsen <skabet@gmail.com>
parents:
68
diff
changeset
|
59 "cast" : Tok.Cast, |
48bb2287c035
Added Modules. Right now it's very simple - will grow with time and need.
Anders Johnsen <skabet@gmail.com>
parents:
68
diff
changeset
|
60 |
48bb2287c035
Added Modules. Right now it's very simple - will grow with time and need.
Anders Johnsen <skabet@gmail.com>
parents:
68
diff
changeset
|
61 // modules |
48bb2287c035
Added Modules. Right now it's very simple - will grow with time and need.
Anders Johnsen <skabet@gmail.com>
parents:
68
diff
changeset
|
62 "module" : Tok.Module, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
63 "import" : Tok.Import, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
64 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
65 // attributse |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
66 "public" : Tok.Public, |
136 | 67 "private" : Tok.Private, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
68 "protected" : Tok.Protected, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
69 "package" : Tok.Package, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
70 "export" : Tok.Export, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
71 "static" : Tok.Static, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
72 "final" : Tok.Final, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
73 "const" : Tok.Const, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
74 "abstract" : Tok.Abstract, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
75 "override" : Tok.Override, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
76 "depracted" : Tok.Depracted, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
77 "auto" : Tok.Auto, |
140
927ae00bd9d2
Added support for extern keyword. Being ignored atm though. Also changed ast/Module, so that you can get a list of only vars, functions or structs.
Anders Johnsen <skabet@gmail.com>
parents:
136
diff
changeset
|
78 "extern" : Tok.Extern, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
79 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
80 // exceptions |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
81 "assert" : Tok.Assert, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
82 "throw" : Tok.Throw, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
83 "try" : Tok.Try, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
84 "catch" : Tok.Catch, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
85 "finally" : Tok.Finally, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
86 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
87 // functions |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
88 "in" : Tok.In, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
89 "out" : Tok.Out, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
90 "body" : Tok.Body, |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
91 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
92 "asm" : Tok.Asm |
1 | 93 ]; |
94 } |