Mercurial > projects > dang
annotate lexer/Keyword.d @ 158:57b0b4464a0b
Parsing "new", putting it in AST and performs some tests on it. Eg. if the contructor exists and the params matches.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Tue, 22 Jul 2008 00:33:58 +0200 |
parents | 0ea5d2f3e96b |
children | 08f68d684047 |
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, |
154
0ea5d2f3e96b
Parsing "this" as constructor. Also removed regex from the test run program(seg fault - dmd???)
Anders Johnsen <skabet@gmail.com>
parents:
148
diff
changeset
|
48 "this" : Tok.This, |
158
57b0b4464a0b
Parsing "new", putting it in AST and performs some tests on it. Eg. if the contructor exists and the params matches.
Anders Johnsen <skabet@gmail.com>
parents:
154
diff
changeset
|
49 "new" : Tok.New, |
154
0ea5d2f3e96b
Parsing "this" as constructor. Also removed regex from the test run program(seg fault - dmd???)
Anders Johnsen <skabet@gmail.com>
parents:
148
diff
changeset
|
50 // "super" : Tok.Super, |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
51 |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
52 // control flow |
5
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
53 "if" : Tok.If, |
11
642c6a998fd9
Support for while statements and fixed scope for if
Anders Halager <halager@gmail.com>
parents:
5
diff
changeset
|
54 "else" : Tok.Else, |
642c6a998fd9
Support for while statements and fixed scope for if
Anders Halager <halager@gmail.com>
parents:
5
diff
changeset
|
55 "while" : Tok.While, |
146 | 56 "for" : Tok.For, |
36
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
57 "switch" : Tok.Switch, |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
58 "case" : Tok.Case, |
ce17bea8e9bd
Switch statements support
Anders Halager <halager@gmail.com>
parents:
22
diff
changeset
|
59 "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
|
60 "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
|
61 "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
|
62 "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
|
63 |
48bb2287c035
Added Modules. Right now it's very simple - will grow with time and need.
Anders Johnsen <skabet@gmail.com>
parents:
68
diff
changeset
|
64 // 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
|
65 "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
|
66 "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
|
67 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
68 // attributse |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
69 "public" : Tok.Public, |
136 | 70 "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
|
71 "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
|
72 "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
|
73 "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
|
74 "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
|
75 "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
|
76 "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
|
77 "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
|
78 "override" : Tok.Override, |
148
6ec686d9c87d
Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents:
146
diff
changeset
|
79 "deprecated": Tok.Deprecated, |
126
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
80 "auto" : Tok.Auto, |
148
6ec686d9c87d
Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents:
146
diff
changeset
|
81 "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
|
82 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
83 // exceptions |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
84 "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
|
85 "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
|
86 "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
|
87 "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
|
88 "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
|
89 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
90 // functions |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
91 "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
|
92 "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
|
93 "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
|
94 |
c3b24e7e8cf8
Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
Anders Johnsen <skabet@gmail.com>
parents:
103
diff
changeset
|
95 "asm" : Tok.Asm |
1 | 96 ]; |
97 } |