Mercurial > projects > dil
annotate trunk/src/dil/ast/Expression.d @ 621:2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Fri, 11 Jan 2008 01:11:12 +0100 |
parents | |
children | 89ee7802c978 |
rev | line source |
---|---|
621
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.ast.Expression; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
7 import dil.ast.Node; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
8 import dil.semantic.Scope; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 import dil.semantic.Types; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 import common; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 abstract class Expression : Node |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 Type type; /// The type of this expression. |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 this() |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 super(NodeCategory.Expression); |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 } |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 // Semantic analysis: |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
23 Expression semantic(Scope scop) |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 debug Stdout("SA for "~this.classinfo.name).newline; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
26 if (!type) |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
27 type = Types.Undefined; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
28 return this; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 } |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
31 Expression evaluate() |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
32 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
33 return null; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
34 } |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
35 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
36 import dil.Messages; |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
37 void error(Scope scop, MID mid) |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
38 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
39 scop.error(this.begin, mid); |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
40 } |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
41 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
42 void error(Scope scop, char[] msg) |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
43 { |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
44 |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
45 } |
2ac14bb6b84e
Moved class dil.ast.Expression to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 } |