annotate dmd/lexer.h @ 1650:40bd4a0d4870

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