Mercurial > projects > dil
view trunk/src/dil/semantic/Interpreter.d @ 691:276e2866f5fd
Added static interpret() method to Interpreter.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Tue, 22 Jan 2008 18:05:37 +0100 |
parents | f14cd41fc87d |
children | 56100b270897 |
line wrap: on
line source
/++ Author: Aziz Köksal License: GPL3 +/ module dil.semantic.Interpreter; import dil.ast.Visitor; import dil.ast.Node, dil.ast.Declarations, dil.ast.Expressions, dil.ast.Statements, dil.ast.Types, dil.ast.Parameters; import dil.semantic.Symbol, dil.semantic.Symbols, dil.semantic.Scope, dil.semantic.Types; import dil.Information; class Interpreter : Visitor { Scope scop; InfoManager infoMan; static class Result : Expression { } static const Result CantInterpret; static this() { CantInterpret = new Result; CantInterpret.type = Types.Error; } static Expression interpret(Expression e, InfoManager infoMan, Scope scop) { return (new Interpreter(scop, infoMan)).start(e); } this(Scope scop, InfoManager infoMan) { this.scop = scop; this.infoMan = infoMan; } /// Start interpretation. Expression start(Expression e) { return e; } bool isImmutable(Expression e) { switch (e.kind) { alias NodeKind NK; case NK.IntExpression, NK.RealExpression, NK.ComplexExpression, NK.CharExpression, NK.BoolExpression, NK.StringExpression: return true; default: return false; } } }