# HG changeset patch # User Aziz K?ksal # Date 1201031770 -3600 # Node ID 19a34b69cc7dbf76f9d6a2b02c70a0c07ae4746a # Parent 56100b2708975db7602bf90a45875acbf49f8124 Renamed some members of BinaryExpression and QualifiedType. Added visit(TypeofType) to SemanticPass2. diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/ast/DefaultVisitor.d --- a/trunk/src/dil/ast/DefaultVisitor.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/ast/DefaultVisitor.d Tue Jan 22 20:56:10 2008 +0100 @@ -113,10 +113,10 @@ {} else static if (is(E : CondExpression)) - visitE(e.condition), visitE(e.left), visitE(e.right); + visitE(e.condition), visitE(e.lhs), visitE(e.rhs); else static if (is(E : BinaryExpression)) - visitE(e.left), visitE(e.right); + visitE(e.lhs), visitE(e.rhs); else static if (is(E : UnaryExpression)) { @@ -291,7 +291,7 @@ //IntegralType, //IdentifierType have no subnodes. static if (is(T == QualifiedType)) - visitT(t.left), visitT(t.right); + visitT(t.lhs), visitT(t.rhs); static if (is(T == TypeofType)) visitE(t.e); static if (is(T == TemplateInstanceType)) diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/ast/Expressions.d --- a/trunk/src/dil/ast/Expressions.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/ast/Expressions.d Tue Jan 22 20:56:10 2008 +0100 @@ -24,13 +24,14 @@ abstract class BinaryExpression : Expression { - Expression left, right; + Expression lhs; /// Left-hand side expression. + Expression rhs; /// Right-hand side expression. Token* tok; - this(Expression left, Expression right, Token* tok) + this(Expression lhs, Expression rhs, Token* tok) { - addChildren([left, right]); - this.left = left; - this.right = right; + addChildren([lhs, rhs]); + this.lhs = lhs; + this.rhs = rhs; this.tok = tok; } } diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/ast/Node.d --- a/trunk/src/dil/ast/Node.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/ast/Node.d Tue Jan 22 20:56:10 2008 +0100 @@ -16,7 +16,7 @@ { NodeCategory category; NodeKind kind; - Node[] children; + Node[] children; // Will be probably removed sometime. Token* begin, end; this(NodeCategory category) diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/ast/Types.d --- a/trunk/src/dil/ast/Types.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/ast/Types.d Tue Jan 22 20:56:10 2008 +0100 @@ -64,14 +64,14 @@ /// Type "." Type class QualifiedType : TypeNode { - alias next left; - TypeNode right; - this(TypeNode left, TypeNode right) + alias next lhs; /// Left-hand side type. + TypeNode rhs; /// Right-hand side type. + this(TypeNode lhs, TypeNode rhs) { - super(left); + super(lhs); mixin(set_kind); - addChild(right); - this.right = right; + addChild(rhs); + this.rhs = rhs; } } diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/semantic/Pass2.d --- a/trunk/src/dil/semantic/Pass2.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/semantic/Pass2.d Tue Jan 22 20:56:10 2008 +0100 @@ -102,6 +102,13 @@ return md; } + T visit(TypeofType t) + { + t.e = visitE(t.e); + t.type = t.e.type; + return t; + } + T visit(ArrayType t) { return t; @@ -125,6 +132,7 @@ TOK.Ifloat : Types.Ifloat, TOK.Idouble : Types.Idouble, TOK.Ireal : Types.Ireal, TOK.Cfloat : Types.Cfloat, TOK.Cdouble : Types.Cdouble, TOK.Creal : Types.Creal, TOK.Void : Types.Void ]; + assert(t.tok in tok2Type); t.type = tok2Type[t.tok]; return t; } @@ -143,9 +151,9 @@ { if (!e.type) { - e.left = visitE(e.left); - e.right = visitE(e.right); - e.type = e.right.type; + e.lhs = visitE(e.lhs); + e.rhs = visitE(e.rhs); + e.type = e.rhs.type; } return e; } diff -r 56100b270897 -r 19a34b69cc7d trunk/src/dil/translator/German.d --- a/trunk/src/dil/translator/German.d Tue Jan 22 19:34:58 2008 +0100 +++ b/trunk/src/dil/translator/German.d Tue Jan 22 20:56:10 2008 +0100 @@ -316,9 +316,9 @@ TypeNode visit(QualifiedType n) { - visitT(n.left); + visitT(n.lhs); put("."); - visitT(n.right); + visitT(n.rhs); return n; }