annotate dmd/lexer.h @ 1578:1dee66f6ec0b

Removed a chunk of code in favour of a shorter and more portable method
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 08 Sep 2009 11:21:30 +0100
parents 229e02867307
children def7a1d494fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
1
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
2 // Compiler implementation of the D programming language
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
3 // Copyright (c) 1999-2008 by Digital Mars
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
4 // All Rights Reserved
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
5 // written by Walter Bright
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
6 // http://www.digitalmars.com
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
7 // License for redistribution is by either the Artistic License
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
9 // See the included readme.txt for details.
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
10
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
11 #ifndef DMD_LEXER_H
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
12 #define DMD_LEXER_H
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
13
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
14 #ifdef __DMC__
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
15 #pragma once
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
16 #endif /* __DMC__ */
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
17
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
18 #include "root.h"
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
19 #include "mars.h"
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
20
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
21 struct StringTable;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
22 struct Identifier;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
23 struct Module;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
24
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
25 /* Tokens:
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
26 ( )
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
27 [ ]
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
28 { }
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
29 < > <= >= == != === !==
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
30 << >> <<= >>= >>> >>>=
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
31 + - += -=
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
32 * / % *= /= %=
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
33 & | ^ &= |= ^=
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
34 = ! ~
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
35 ++ --
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
36 . -> : ,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
37 ? && ||
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
38 */
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
39
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
40 enum TOK
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
41 {
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
42 TOKreserved,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
43
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
44 // Other
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
45 TOKlparen, TOKrparen,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
46 TOKlbracket, TOKrbracket,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
47 TOKlcurly, TOKrcurly,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
48 TOKcolon, TOKneg,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
49 TOKsemicolon, TOKdotdotdot,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
50 TOKeof, TOKcast,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
51 TOKnull, TOKassert,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
52 TOKtrue, TOKfalse,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
53 TOKarray, TOKcall,
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1195
diff changeset
54 TOKaddress,
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
55 TOKtype, TOKthrow,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
56 TOKnew, TOKdelete,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
57 TOKstar, TOKsymoff,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
58 TOKvar, TOKdotvar,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
59 TOKdotti, TOKdotexp,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
60 TOKdottype, TOKslice,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
61 TOKarraylength, TOKversion,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
62 TOKmodule, TOKdollar,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
63 TOKtemplate, TOKdottd,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
64 TOKdeclaration, TOKtypeof,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
65 TOKpragma, TOKdsymbol,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
66 TOKtypeid, TOKuadd,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
67 TOKremove,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
68 TOKnewanonclass, TOKcomment,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
69 TOKarrayliteral, TOKassocarrayliteral,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
70 TOKstructliteral,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
71
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
72 // Operators
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
73 TOKlt, TOKgt,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
74 TOKle, TOKge,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
75 TOKequal, TOKnotequal,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
76 TOKidentity, TOKnotidentity,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
77 TOKindex, TOKis,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
78 TOKtobool,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
79
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
80 // 60
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
81 // NCEG floating point compares
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
82 // !<>= <> <>= !> !>= !< !<= !<>
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
83 TOKunord,TOKlg,TOKleg,TOKule,TOKul,TOKuge,TOKug,TOKue,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
84
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
85 TOKshl, TOKshr,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
86 TOKshlass, TOKshrass,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
87 TOKushr, TOKushrass,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
88 TOKcat, TOKcatass, // ~ ~=
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
89 TOKadd, TOKmin, TOKaddass, TOKminass,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
90 TOKmul, TOKdiv, TOKmod,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
91 TOKmulass, TOKdivass, TOKmodass,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
92 TOKand, TOKor, TOKxor,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
93 TOKandass, TOKorass, TOKxorass,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
94 TOKassign, TOKnot, TOKtilde,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
95 TOKplusplus, TOKminusminus, TOKconstruct, TOKblit,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
96 TOKdot, TOKarrow, TOKcomma,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
97 TOKquestion, TOKandand, TOKoror,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
98
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
99 // 104
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
100 // Numeric literals
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
101 TOKint32v, TOKuns32v,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
102 TOKint64v, TOKuns64v,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
103 TOKfloat32v, TOKfloat64v, TOKfloat80v,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
104 TOKimaginary32v, TOKimaginary64v, TOKimaginary80v,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
105
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
106 // Char constants
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
107 TOKcharv, TOKwcharv, TOKdcharv,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
108
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
109 // Leaf operators
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
110 TOKidentifier, TOKstring,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
111 TOKthis, TOKsuper,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
112 TOKhalt, TOKtuple,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
113
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
114 // Basic types
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
115 TOKvoid,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
116 TOKint8, TOKuns8,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
117 TOKint16, TOKuns16,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
118 TOKint32, TOKuns32,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
119 TOKint64, TOKuns64,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
120 TOKfloat32, TOKfloat64, TOKfloat80,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
121 TOKimaginary32, TOKimaginary64, TOKimaginary80,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
122 TOKcomplex32, TOKcomplex64, TOKcomplex80,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
123 TOKchar, TOKwchar, TOKdchar, TOKbit, TOKbool,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
124 TOKcent, TOKucent,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
125
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
126 // Aggregates
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
127 TOKstruct, TOKclass, TOKinterface, TOKunion, TOKenum, TOKimport,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
128 TOKtypedef, TOKalias, TOKoverride, TOKdelegate, TOKfunction,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
129 TOKmixin,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
130
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
131 TOKalign, TOKextern, TOKprivate, TOKprotected, TOKpublic, TOKexport,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
132 TOKstatic, /*TOKvirtual,*/ TOKfinal, TOKconst, TOKabstract, TOKvolatile,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
133 TOKdebug, TOKdeprecated, TOKin, TOKout, TOKinout, TOKlazy,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
134 TOKauto, TOKpackage, TOKmanifest,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
135
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
136 // Statements
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
137 TOKif, TOKelse, TOKwhile, TOKfor, TOKdo, TOKswitch,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
138 TOKcase, TOKdefault, TOKbreak, TOKcontinue, TOKwith,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
139 TOKsynchronized, TOKreturn, TOKgoto, TOKtry, TOKcatch, TOKfinally,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
140 TOKasm, TOKforeach, TOKforeach_reverse,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
141 TOKscope,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
142 TOKon_scope_exit, TOKon_scope_failure, TOKon_scope_success,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
143
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
144 // Contracts
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
145 TOKbody, TOKinvariant,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
146
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
147 // Testing
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
148 TOKunittest,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
149
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
150 // Added after 1.0
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
151 TOKref,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
152 TOKmacro,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
153 #if DMDV2
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
154 TOKtraits,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
155 TOKoverloadset,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
156 TOKpure,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
157 TOKnothrow,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
158 TOKtls,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
159 TOKline,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
160 TOKfile,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
161 TOKshared,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
162 #endif
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
163
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
164 // LDC specific
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
165 #if IN_LLVM
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
166 TOKgep,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
167 #endif
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
168
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
169 TOKMAX
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
170 };
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
171
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
172 #define CASE_BASIC_TYPES \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
173 case TOKwchar: case TOKdchar: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
174 case TOKbit: case TOKbool: case TOKchar: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
175 case TOKint8: case TOKuns8: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
176 case TOKint16: case TOKuns16: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
177 case TOKint32: case TOKuns32: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
178 case TOKint64: case TOKuns64: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
179 case TOKfloat32: case TOKfloat64: case TOKfloat80: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
180 case TOKimaginary32: case TOKimaginary64: case TOKimaginary80: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
181 case TOKcomplex32: case TOKcomplex64: case TOKcomplex80: \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
182 case TOKvoid
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
183
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
184 #define CASE_BASIC_TYPES_X(t) \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
185 case TOKvoid: t = Type::tvoid; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
186 case TOKint8: t = Type::tint8; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
187 case TOKuns8: t = Type::tuns8; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
188 case TOKint16: t = Type::tint16; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
189 case TOKuns16: t = Type::tuns16; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
190 case TOKint32: t = Type::tint32; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
191 case TOKuns32: t = Type::tuns32; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
192 case TOKint64: t = Type::tint64; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
193 case TOKuns64: t = Type::tuns64; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
194 case TOKfloat32: t = Type::tfloat32; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
195 case TOKfloat64: t = Type::tfloat64; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
196 case TOKfloat80: t = Type::tfloat80; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
197 case TOKimaginary32: t = Type::timaginary32; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
198 case TOKimaginary64: t = Type::timaginary64; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
199 case TOKimaginary80: t = Type::timaginary80; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
200 case TOKcomplex32: t = Type::tcomplex32; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
201 case TOKcomplex64: t = Type::tcomplex64; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
202 case TOKcomplex80: t = Type::tcomplex80; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
203 case TOKbit: t = Type::tbit; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
204 case TOKbool: t = Type::tbool; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
205 case TOKchar: t = Type::tchar; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
206 case TOKwchar: t = Type::twchar; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
207 case TOKdchar: t = Type::tdchar; goto LabelX; \
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
208 LabelX
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
209
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
210 struct Token
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
211 {
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
212 Token *next;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
213 unsigned char *ptr; // pointer to first character of this token within buffer
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
214 enum TOK value;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
215 unsigned char *blockComment; // doc comment string prior to this token
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
216 unsigned char *lineComment; // doc comment for previous token
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
217 union
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
218 {
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
219 // Integers
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
220 d_int64 int64value;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
221 d_uns64 uns64value;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
222
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
223 // Floats
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
224 #ifdef IN_GCC
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
225 // real_t float80value; // can't use this in a union!
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
226 #else
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
227 d_float80 float80value;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
228 #endif
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
229
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
230 struct
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
231 { unsigned char *ustring; // UTF8 string
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
232 unsigned len;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
233 unsigned char postfix; // 'c', 'w', 'd'
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
234 };
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
235
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
236 Identifier *ident;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
237 };
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
238 #ifdef IN_GCC
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
239 real_t float80value; // can't use this in a union!
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
240 #endif
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
241
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
242 static const char *tochars[TOKMAX];
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
243 static void *operator new(size_t sz);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
244
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
245 int isKeyword();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
246 void print();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
247 const char *toChars();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
248 static const char *toChars(enum TOK);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
249 };
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
250
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
251 struct Lexer
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
252 {
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
253 static StringTable stringtable;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
254 static OutBuffer stringbuffer;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
255 static Token *freelist;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
256
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
257 Loc loc; // for error messages
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
258
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
259 unsigned char *base; // pointer to start of buffer
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
260 unsigned char *end; // past end of buffer
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
261 unsigned char *p; // current character
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
262 Token token;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
263 Module *mod;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
264 int doDocComment; // collect doc comment information
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
265 int anyToken; // !=0 means seen at least one token
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
266 int commentToken; // !=0 means comments are TOKcomment's
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
267
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
268 Lexer(Module *mod,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
269 unsigned char *base, unsigned begoffset, unsigned endoffset,
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
270 int doDocComment, int commentToken);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
271
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
272 static void initKeywords();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
273 static Identifier *idPool(const char *s);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
274 static Identifier *uniqueId(const char *s);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
275 static Identifier *uniqueId(const char *s, int num);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
276
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
277 TOK nextToken();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
278 TOK peekNext();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
279 void scan(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
280 Token *peek(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
281 Token *peekPastParen(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
282 unsigned escapeSequence();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
283 TOK wysiwygStringConstant(Token *t, int tc);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
284 TOK hexStringConstant(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
285 #if DMDV2
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
286 TOK delimitedStringConstant(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
287 TOK tokenStringConstant(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
288 #endif
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
289 TOK escapeStringConstant(Token *t, int wide);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
290 TOK charConstant(Token *t, int wide);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
291 void stringPostfix(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
292 unsigned wchar(unsigned u);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
293 TOK number(Token *t);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
294 TOK inreal(Token *t);
1372
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
295 void error(const char *format, ...) IS_PRINTF(2);
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
296 void error(Loc loc, const char *format, ...) IS_PRINTF(3);
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
297 void pragma();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
298 unsigned decodeUTF();
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
299 void getDocComment(Token *t, unsigned lineComment);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
300
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
301 static int isValidIdentifier(char *p);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
302 static unsigned char *combineComments(unsigned char *c1, unsigned char *c2);
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
303 };
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
304
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1165
diff changeset
305 #endif /* DMD_LEXER_H */