Mercurial > projects > dil
annotate trunk/src/dil/ast/Types.d @ 701:65ad2f96df1f
Moved TypeNode to new module dil.ast.Type.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 26 Jan 2008 23:53:34 +0100 |
parents | 19a34b69cc7d |
children | 5e3ef1b2011c |
rev | line source |
---|---|
94 | 1 /++ |
2 Author: Aziz Köksal | |
249 | 3 License: GPL3 |
94 | 4 +/ |
588
dcfec202718d
Moved dil.Types to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
586
diff
changeset
|
5 module dil.ast.Types; |
562
b0533550d64c
Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
521
diff
changeset
|
6 |
701
65ad2f96df1f
Moved TypeNode to new module dil.ast.Type.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
7 public import dil.ast.Type; |
580
fa6d3c52757d
Moved SyntaxTree.d to new package 'ast'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
562
diff
changeset
|
8 import dil.ast.Node; |
659
304331ca2f95
Renamed EmptyExpression to IllegalExpression.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
9 import dil.ast.Expression; |
608
fac9e8b258fc
Moved dil.ast.Parameter to dil.ast.Parameters.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
606
diff
changeset
|
10 import dil.ast.Parameters; |
600
041eae272362
Moved dil.Identifier to dil.lexer.Identifier.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
596
diff
changeset
|
11 import dil.lexer.Identifier; |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
12 import dil.semantic.Types; |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
13 import dil.Enums; |
135 | 14 |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
15 /// Syntax error. |
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
16 class IllegalType : TypeNode |
134
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
17 { |
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
18 this() |
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
19 { |
281 | 20 mixin(set_kind); |
134
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
21 } |
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
22 } |
a31aa0d6dd5e
- Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents:
130
diff
changeset
|
23 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
24 /// char, int, float etc. |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
25 class IntegralType : TypeNode |
153 | 26 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
27 TOK tok; |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
28 this(TOK tok) |
153 | 29 { |
281 | 30 mixin(set_kind); |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
31 this.tok = tok; |
153 | 32 } |
33 } | |
34 | |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
35 /// Identifier |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
36 class IdentifierType : TypeNode |
154
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
37 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
38 Identifier* ident; |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
39 this(Identifier* ident) |
154
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
40 { |
281 | 41 mixin(set_kind); |
154
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
42 this.ident = ident; |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
43 } |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
44 } |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
45 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
46 /// Type "." Type |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
47 class QualifiedType : TypeNode |
488
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
48 { |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
49 alias next lhs; /// Left-hand side type. |
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
50 TypeNode rhs; /// Right-hand side type. |
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
51 this(TypeNode lhs, TypeNode rhs) |
488
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
52 { |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
53 super(lhs); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
54 mixin(set_kind); |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
55 addChild(rhs); |
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
56 this.rhs = rhs; |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
57 } |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
58 } |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
59 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
60 /// "." Type |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
61 class ModuleScopeType : TypeNode |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
62 { |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
63 this(TypeNode next) |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
64 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
65 super(next); |
488
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
66 mixin(set_kind); |
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
67 } |
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
68 } |
cfb3805768b6
Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
409
diff
changeset
|
69 |
683
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
671
diff
changeset
|
70 /// "typeof" "(" Expression ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
71 class TypeofType : TypeNode |
154
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
72 { |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
73 Expression e; |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
74 this(Expression e) |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
75 { |
492
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
76 this(); |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
77 addChild(e); |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
78 this.e = e; |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
79 } |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
80 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
81 /// D2.0: "typeof" "(" "return" ")" |
492
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
82 this() |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
83 { |
281 | 84 mixin(set_kind); |
492
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
85 } |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
86 |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
87 bool isTypeofReturn() |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
88 { |
9c208925a3d4
Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
89 return e is null; |
154
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
90 } |
0e7cefb15e43
- Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents:
153
diff
changeset
|
91 } |
95 | 92 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
93 /// Identifier "!" "(" TemplateParameters? ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
94 class TemplateInstanceType : TypeNode |
153 | 95 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
96 Identifier* ident; |
153 | 97 TemplateArguments targs; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
98 this(Identifier* ident, TemplateArguments targs) |
153 | 99 { |
281 | 100 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
101 addOptChild(targs); |
153 | 102 this.ident = ident; |
103 this.targs = targs; | |
104 } | |
105 } | |
106 | |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
107 /// Type * |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
108 class PointerType : TypeNode |
95 | 109 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
110 this(TypeNode next) |
95 | 111 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
112 super(next); |
281 | 113 mixin(set_kind); |
95 | 114 } |
115 } | |
116 | |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
117 /// Dynamic array: T[] or |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
118 /// Static array: T[E] or |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
119 /// Slice array (for tuples): T[E..E] or |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
120 /// Associative array: T[T] |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
121 class ArrayType : TypeNode |
95 | 122 { |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
123 Expression e1, e2; |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
124 TypeNode assocType; |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
125 |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
126 this(TypeNode t) |
95 | 127 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
128 super(t); |
281 | 129 mixin(set_kind); |
106 | 130 } |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
131 |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
132 this(TypeNode t, Expression e1, Expression e2) |
106 | 133 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
134 this(t); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
135 addChild(e1); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
136 addOptChild(e2); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
137 this.e1 = e1; |
106 | 138 this.e2 = e2; |
139 } | |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
140 |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
141 this(TypeNode t, TypeNode assocType) |
106 | 142 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
143 this(t); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
144 addChild(assocType); |
295
75b47c71a34c
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
291
diff
changeset
|
145 this.assocType = assocType; |
95 | 146 } |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
147 |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
148 bool isDynamic() |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
149 { |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
150 return !assocType && !e1; |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
151 } |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
152 |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
153 bool isStatic() |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
154 { |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
155 return e1 && !e2; |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
156 } |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
157 |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
158 bool isSlice() |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
159 { |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
160 return e1 && e2; |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
161 } |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
162 |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
163 bool isAssociative() |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
164 { |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
165 return assocType !is null; |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
166 } |
95 | 167 } |
100 | 168 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
169 /// ReturnType "function" "(" Parameters? ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
170 class FunctionType : TypeNode |
130 | 171 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
172 alias next returnType; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
173 Parameters params; |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
174 this(TypeNode returnType, Parameters params) |
130 | 175 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
176 super(returnType); |
281 | 177 mixin(set_kind); |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
178 addChild(params); |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
179 this.params = params; |
130 | 180 } |
181 } | |
135 | 182 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
183 /// ReturnType "delegate" "(" Parameters? ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
184 class DelegateType : TypeNode |
135 | 185 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
186 alias next returnType; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
187 Parameters params; |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
188 this(TypeNode returnType, Parameters params) |
135 | 189 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
190 super(returnType); |
281 | 191 mixin(set_kind); |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
192 addChild(params); |
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
193 this.params = params; |
135 | 194 } |
195 } | |
269 | 196 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
197 /// Type "(" BasicType2 Identifier ")" "(" Parameters? ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
198 class CFuncPointerType : TypeNode |
409
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
199 { |
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
200 Parameters params; |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
201 this(TypeNode type, Parameters params) |
409
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
202 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
203 super(type); |
409
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
204 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
488
diff
changeset
|
205 addOptChild(params); |
409
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
206 } |
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
207 } |
38fccd2640eb
Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
376
diff
changeset
|
208 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
209 /// "class" Identifier : BaseClasses |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
210 class BaseClassType : TypeNode |
655
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
211 { |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
212 Protection prot; |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
213 this(Protection prot, TypeNode type) |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
214 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
215 super(type); |
655
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
216 mixin(set_kind); |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
217 this.prot = prot; |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
218 } |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
219 } |
0acc43b86bf2
Moved class BaseClass to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
220 |
635 | 221 // version(D2) |
222 // { | |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
223 /// "const" "(" Type ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
224 class ConstType : TypeNode |
269 | 225 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
226 this(TypeNode next) |
269 | 227 { |
228 // If t is null: cast(const) | |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
229 super(next); |
281 | 230 mixin(set_kind); |
269 | 231 } |
232 } | |
233 | |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
234 /// "invariant" "(" Type ")" |
511
aa73f669c298
Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
505
diff
changeset
|
235 class InvariantType : TypeNode |
269 | 236 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
237 this(TypeNode next) |
269 | 238 { |
239 // If t is null: cast(invariant) | |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
240 super(next); |
281 | 241 mixin(set_kind); |
269 | 242 } |
243 } | |
635 | 244 // } // version(D2) |