Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Unified Diff: pkg/kernel/lib/interpreter/interpreter.dart

Issue 2975893002: Rename configurations according to specification (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/interpreter/interpreter.dart
diff --git a/pkg/kernel/lib/interpreter/interpreter.dart b/pkg/kernel/lib/interpreter/interpreter.dart
index 121709d4145f5ff0dae14b8e7f6c6c501473b9b2..a232e75363f8a0475e3376401452a88448a6651a 100644
--- a/pkg/kernel/lib/interpreter/interpreter.dart
+++ b/pkg/kernel/lib/interpreter/interpreter.dart
@@ -30,8 +30,8 @@ class Interpreter {
if (mainMethod == null) return;
Statement statementBlock = mainMethod.function.body;
- StatementConfiguration configuration =
- new StatementConfiguration(statementBlock, new State.initial());
+ ExecConfiguration configuration =
+ new ExecConfiguration(statementBlock, new State.initial());
visitor.trampolinedExecution(configuration);
}
}
@@ -98,70 +98,61 @@ class InstanceEnvironment extends Environment {
}
/// Evaluate expressions.
-class Evaluator
- extends ExpressionVisitor1<Configuration, ExpressionConfiguration> {
- Configuration eval(Expression expr, ExpressionConfiguration config) =>
+class Evaluator extends ExpressionVisitor1<Configuration, EvalConfiguration> {
+ Configuration eval(Expression expr, EvalConfiguration config) =>
expr.accept1(this, config);
Configuration evalList(List<InterpreterExpression> list, Environment env,
ApplicationContinuation cont) {
if (list.isNotEmpty) {
- return new ExpressionConfiguration(list.first.expression, env,
+ return new EvalConfiguration(list.first.expression, env,
new ExpressionListContinuation(list.first, list.skip(1), env, cont));
}
- return new ExpressionListContinuationConfiguration(
- cont, <InterpreterValue>[]);
+ return new ApplicationConfiguration(cont, <InterpreterValue>[]);
}
- Configuration defaultExpression(
- Expression node, ExpressionConfiguration config) {
+ Configuration defaultExpression(Expression node, EvalConfiguration config) {
throw new NotImplemented('Evaluation for expressions of type '
'${node.runtimeType} is not implemented.');
}
Configuration visitInvalidExpression1(
- InvalidExpression node, ExpressionConfiguration config) {
+ InvalidExpression node, EvalConfiguration config) {
throw 'Invalid expression at ${node.location.toString()}';
}
- Configuration visitVariableGet(
- VariableGet node, ExpressionConfiguration config) {
+ Configuration visitVariableGet(VariableGet node, EvalConfiguration config) {
Value value = config.environment.lookup(node.variable);
- return new ContinuationConfiguration(config.continuation, value);
+ return new ValuePassingConfiguration(config.continuation, value);
}
- Configuration visitVariableSet(
- VariableSet node, ExpressionConfiguration config) {
+ Configuration visitVariableSet(VariableSet node, EvalConfiguration config) {
var cont = new VariableSetContinuation(
node.variable, config.environment, config.continuation);
- return new ExpressionConfiguration(node.value, config.environment, cont);
+ return new EvalConfiguration(node.value, config.environment, cont);
}
- Configuration visitPropertyGet(
- PropertyGet node, ExpressionConfiguration config) {
+ Configuration visitPropertyGet(PropertyGet node, EvalConfiguration config) {
var cont = new PropertyGetContinuation(node.name, config.continuation);
- return new ExpressionConfiguration(node.receiver, config.environment, cont);
+ return new EvalConfiguration(node.receiver, config.environment, cont);
}
- Configuration visitPropertySet(
- PropertySet node, ExpressionConfiguration config) {
+ Configuration visitPropertySet(PropertySet node, EvalConfiguration config) {
var cont = new PropertySetContinuation(
node.value, node.name, config.environment, config.continuation);
- return new ExpressionConfiguration(node.receiver, config.environment, cont);
+ return new EvalConfiguration(node.receiver, config.environment, cont);
}
- Configuration visitStaticGet(
- StaticGet node, ExpressionConfiguration config) =>
+ Configuration visitStaticGet(StaticGet node, EvalConfiguration config) =>
defaultExpression(node, config);
- Configuration visitStaticSet(
- StaticSet node, ExpressionConfiguration config) =>
+ Configuration visitStaticSet(StaticSet node, EvalConfiguration config) =>
defaultExpression(node, config);
Configuration visitStaticInvocation(
- StaticInvocation node, ExpressionConfiguration config) {
+ StaticInvocation node, EvalConfiguration config) {
if ('print' == node.name.toString()) {
var cont = new PrintContinuation(config.continuation);
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
node.arguments.positional.first, config.environment, cont);
} else {
log.info('static-invocation-${node.target.name.toString()}\n');
@@ -170,108 +161,103 @@ class Evaluator
_createArgumentExpressionList(node.arguments, node.target.function);
ApplicationContinuation cont = new StaticInvocationApplication(
node.target.function, config.continuation);
- return new ExpressionListConfiguration(args, config.environment, cont);
+ return new EvalListConfiguration(args, config.environment, cont);
}
}
Configuration visitMethodInvocation(
- MethodInvocation node, ExpressionConfiguration config) {
+ MethodInvocation node, EvalConfiguration config) {
// Currently supports only method invocation with <2 arguments and is used
// to evaluate implemented operators for int, double and String values.
var cont = new MethodInvocationContinuation(
node.arguments, node.name, config.environment, config.continuation);
- return new ExpressionConfiguration(node.receiver, config.environment, cont);
+ return new EvalConfiguration(node.receiver, config.environment, cont);
}
Configuration visitConstructorInvocation(
- ConstructorInvocation node, ExpressionConfiguration config) {
+ ConstructorInvocation node, EvalConfiguration config) {
ApplicationContinuation cont =
new ConstructorInvocationApplication(node.target, config.continuation);
var args =
_createArgumentExpressionList(node.arguments, node.target.function);
- return new ExpressionListConfiguration(args, config.environment, cont);
+ return new EvalListConfiguration(args, config.environment, cont);
}
- Configuration visitNot(Not node, ExpressionConfiguration config) {
- return new ExpressionConfiguration(node.operand, config.environment,
+ Configuration visitNot(Not node, EvalConfiguration config) {
+ return new EvalConfiguration(node.operand, config.environment,
new NotContinuation(config.continuation));
}
Configuration visitLogicalExpression(
- LogicalExpression node, ExpressionConfiguration config) {
+ LogicalExpression node, EvalConfiguration config) {
if ('||' == node.operator) {
var cont = new OrContinuation(
node.right, config.environment, config.continuation);
- return new ExpressionConfiguration(node.left, config.environment, cont);
+ return new EvalConfiguration(node.left, config.environment, cont);
} else {
assert('&&' == node.operator);
var cont = new AndContinuation(
node.right, config.environment, config.continuation);
- return new ExpressionConfiguration(node.left, config.environment, cont);
+ return new EvalConfiguration(node.left, config.environment, cont);
}
}
Configuration visitConditionalExpression(
- ConditionalExpression node, ExpressionConfiguration config) {
+ ConditionalExpression node, EvalConfiguration config) {
var cont = new ConditionalContinuation(
node.then, node.otherwise, config.environment, config.continuation);
- return new ExpressionConfiguration(
- node.condition, config.environment, cont);
+ return new EvalConfiguration(node.condition, config.environment, cont);
}
Configuration visitStringConcatenation(
- StringConcatenation node, ExpressionConfiguration config) {
+ StringConcatenation node, EvalConfiguration config) {
var cont = new StringConcatenationContinuation(config.continuation);
var expressions = node.expressions
.map((Expression e) => new PositionalExpression(e))
.toList();
- return new ExpressionListConfiguration(
- expressions, config.environment, cont);
+ return new EvalListConfiguration(expressions, config.environment, cont);
}
Configuration visitThisExpression(
- ThisExpression node, ExpressionConfiguration config) {
- return new ContinuationConfiguration(
+ ThisExpression node, EvalConfiguration config) {
+ return new ValuePassingConfiguration(
config.continuation, config.environment.thisInstance);
}
// Evaluation of BasicLiterals.
Configuration visitStringLiteral(
- StringLiteral node, ExpressionConfiguration config) {
- return new ContinuationConfiguration(
+ StringLiteral node, EvalConfiguration config) {
+ return new ValuePassingConfiguration(
config.continuation, new StringValue(node.value));
}
- Configuration visitIntLiteral(
- IntLiteral node, ExpressionConfiguration config) {
- return new ContinuationConfiguration(
+ Configuration visitIntLiteral(IntLiteral node, EvalConfiguration config) {
+ return new ValuePassingConfiguration(
config.continuation, new IntValue(node.value));
}
Configuration visitDoubleLiteral(
- DoubleLiteral node, ExpressionConfiguration config) {
- return new ContinuationConfiguration(
+ DoubleLiteral node, EvalConfiguration config) {
+ return new ValuePassingConfiguration(
config.continuation, new DoubleValue(node.value));
}
- Configuration visitBoolLiteral(
- BoolLiteral node, ExpressionConfiguration config) {
+ Configuration visitBoolLiteral(BoolLiteral node, EvalConfiguration config) {
Value value = node.value ? Value.trueInstance : Value.falseInstance;
- return new ContinuationConfiguration(config.continuation, value);
+ return new ValuePassingConfiguration(config.continuation, value);
}
- Configuration visitNullLiteral(
- NullLiteral node, ExpressionConfiguration config) {
- return new ContinuationConfiguration(
+ Configuration visitNullLiteral(NullLiteral node, EvalConfiguration config) {
+ return new ValuePassingConfiguration(
config.continuation, Value.nullInstance);
}
- Configuration visitLet(Let node, ExpressionConfiguration config) {
+ Configuration visitLet(Let node, EvalConfiguration config) {
var letCont = new LetContinuation(
node.variable, node.body, config.environment, config.continuation);
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
node.variable.initializer, config.environment, letCont);
}
}
@@ -280,7 +266,7 @@ class Evaluator
class State {
final Environment environment;
final Label labels;
- final StatementConfiguration statementConfiguration;
+ final ExecConfiguration statementConfiguration;
final ExpressionContinuation returnContinuation;
@@ -317,7 +303,7 @@ class State {
/// enclosing label.
class Label {
final LabeledStatement statement;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
final Label enclosingLabel;
Label(this.statement, this.configuration, this.enclosingLabel);
@@ -335,17 +321,17 @@ abstract class Configuration {
}
/// Represents the configuration for execution of statement.
-class StatementConfiguration extends Configuration {
+class ExecConfiguration extends Configuration {
final Statement statement;
final State state;
- StatementConfiguration(this.statement, this.state);
+ ExecConfiguration(this.statement, this.state);
Configuration step(StatementExecuter executer) =>
executer.exec(statement, state);
}
-class ExitConfiguration extends StatementConfiguration {
+class ExitConfiguration extends ExecConfiguration {
final ExpressionContinuation returnContinuation;
ExitConfiguration(this.returnContinuation) : super(null, null);
@@ -355,7 +341,7 @@ class ExitConfiguration extends StatementConfiguration {
}
}
-class NewInstanceConfiguration extends StatementConfiguration {
+class NewInstanceConfiguration extends ExecConfiguration {
final ExpressionContinuation continuation;
final ObjectValue newObject;
@@ -368,27 +354,27 @@ class NewInstanceConfiguration extends StatementConfiguration {
}
/// Represents the configuration for applying an [ExpressionContinuation].
-class ContinuationConfiguration extends Configuration {
+class ValuePassingConfiguration extends Configuration {
final ExpressionContinuation continuation;
final Value value;
- ContinuationConfiguration(this.continuation, this.value);
+ ValuePassingConfiguration(this.continuation, this.value);
Configuration step(StatementExecuter _) => continuation(value);
}
/// Represents the configuration for applying an [ApplicationContinuation].
-class ExpressionListContinuationConfiguration extends Configuration {
+class ApplicationConfiguration extends Configuration {
final ApplicationContinuation continuation;
final List<InterpreterValue> values;
- ExpressionListContinuationConfiguration(this.continuation, this.values);
+ ApplicationConfiguration(this.continuation, this.values);
Configuration step(StatementExecuter _) => continuation(values);
}
/// Represents the configuration for evaluating an [Expression].
-class ExpressionConfiguration extends Configuration {
+class EvalConfiguration extends Configuration {
final Expression expression;
/// Environment in which the expression is evaluated.
@@ -397,20 +383,19 @@ class ExpressionConfiguration extends Configuration {
/// Next continuation to be applied.
final Continuation continuation;
- ExpressionConfiguration(this.expression, this.environment, this.continuation);
+ EvalConfiguration(this.expression, this.environment, this.continuation);
Configuration step(StatementExecuter executer) =>
executer.eval(expression, this);
}
/// Represents the configuration for evaluating a list of expressions.
-class ExpressionListConfiguration extends Configuration {
+class EvalListConfiguration extends Configuration {
final List<InterpreterExpression> expressions;
final Environment environment;
final Continuation continuation;
- ExpressionListConfiguration(
- this.expressions, this.environment, this.continuation);
+ EvalListConfiguration(this.expressions, this.environment, this.continuation);
Configuration step(StatementExecuter executer) =>
executer.evalList(expressions, environment, continuation);
@@ -541,7 +526,7 @@ class StaticInvocationApplication extends ApplicationContinuation {
.withExpressionContinuation(continuation)
.withConfiguration(new ExitConfiguration(continuation))
.withEnvironment(functionEnv);
- return new StatementConfiguration(function.body, bodyState);
+ return new ExecConfiguration(function.body, bodyState);
}
}
@@ -573,7 +558,7 @@ class ConstructorInvocationApplication extends ApplicationContinuation {
class RedirectingConstructorApplication extends ApplicationContinuation {
final Constructor constructor;
final Environment environment;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
RedirectingConstructorApplication(
this.constructor, this.environment, this.configuration);
@@ -595,7 +580,7 @@ class RedirectingConstructorApplication extends ApplicationContinuation {
class SuperConstructorApplication extends ApplicationContinuation {
final Constructor constructor;
final Environment environment;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
SuperConstructorApplication(
this.constructor, this.environment, this.configuration);
@@ -618,7 +603,7 @@ class SuperConstructorApplication extends ApplicationContinuation {
class ObjectInitializationConfiguration extends Configuration {
final Constructor constructor;
final Environment environment;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
ObjectInitializationConfiguration(
this.constructor, this.environment, this.configuration);
@@ -634,7 +619,7 @@ class ObjectInitializationConfiguration extends Configuration {
var args = _createArgumentExpressionList(
initializer.arguments, initializer.target.function);
- return new ExpressionListConfiguration(args, environment, app);
+ return new EvalListConfiguration(args, environment, app);
}
// Redirecting initializer is not the only initializer.
for (Initializer i in constructor.initializers.reversed.skip(1)) {
@@ -644,7 +629,7 @@ class ObjectInitializationConfiguration extends Configuration {
var initEnv = new Environment(environment);
var cont = new InitializerContinuation(
class_, initEnv, constructor.initializers, configuration);
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
(initializer as LocalInitializer).variable.initializer,
initEnv,
cont);
@@ -655,15 +640,14 @@ class ObjectInitializationConfiguration extends Configuration {
var state = new State.initial()
.withEnvironment(environment)
.withConfiguration(configuration);
- var bodyConfig =
- new StatementConfiguration(constructor.function.body, state);
+ var bodyConfig = new ExecConfiguration(constructor.function.body, state);
// Initialize fields in immediately enclosing class.
var cont =
new InstanceFieldsApplication(constructor, environment, bodyConfig);
var fieldExpressions = _createInstanceInitializers(constructor);
- return new ExpressionListConfiguration(
+ return new EvalListConfiguration(
fieldExpressions, new Environment.empty(), cont);
}
@@ -692,7 +676,7 @@ class ObjectInitializationConfiguration extends Configuration {
class InstanceFieldsApplication extends ApplicationContinuation {
final Constructor constructor;
final Environment environment;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
final Class _currentClass;
final ObjectValue _newObject;
@@ -723,7 +707,7 @@ class InstanceFieldsApplication extends ApplicationContinuation {
var superApp = new SuperConstructorApplication(
current.target, environment, configuration);
_initializeNullFields(_currentClass, _newObject);
- return new ExpressionListConfiguration(args, environment, superApp);
+ return new EvalListConfiguration(args, environment, superApp);
}
Class class_ = new Class(constructor.enclosingClass.reference);
@@ -731,7 +715,7 @@ class InstanceFieldsApplication extends ApplicationContinuation {
var cont = new InitializerContinuation(
class_, initEnv, constructor.initializers, configuration);
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
_getExpression(constructor.initializers.first), initEnv, cont);
}
}
@@ -742,7 +726,7 @@ class InitializerContinuation extends ExpressionContinuation {
final Class currentClass;
final Environment initializerEnvironment;
final List<Initializer> initializers;
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
InitializerContinuation(this.currentClass, this.initializerEnvironment,
this.initializers, this.configuration);
@@ -772,7 +756,7 @@ class InitializerContinuation extends ExpressionContinuation {
next.target, initializerEnvironment, configuration);
var args =
_createArgumentExpressionList(next.arguments, next.target.function);
- return new ExpressionListConfiguration(args, initializerEnvironment, app);
+ return new EvalListConfiguration(args, initializerEnvironment, app);
}
if (next is SuperInitializer) {
@@ -783,13 +767,12 @@ class InitializerContinuation extends ExpressionContinuation {
var superApp = new SuperConstructorApplication(
next.target, initializerEnvironment, configuration);
_initializeNullFields(currentClass, newObject);
- return new ExpressionListConfiguration(
- args, initializerEnvironment, superApp);
+ return new EvalListConfiguration(args, initializerEnvironment, superApp);
}
var cont = new InitializerContinuation(currentClass, initializerEnvironment,
initializers.skip(1).toList(), configuration);
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
_getExpression(next), initializerEnvironment, cont);
}
}
@@ -804,8 +787,7 @@ class ValueApplication extends ApplicationContinuation {
Configuration call(List<InterpreterValue> args) {
args.add(value);
- return new ExpressionListContinuationConfiguration(
- applicationContinuation, args);
+ return new ApplicationConfiguration(applicationContinuation, args);
}
}
@@ -814,10 +796,10 @@ abstract class ExpressionContinuation extends Continuation {
Configuration call(Value v);
}
-/// Represents a continuation that returns the next [StatementConfiguration]
+/// Represents a continuation that returns the next [ExecConfiguration]
/// to be executed.
class ExpressionStatementContinuation extends ExpressionContinuation {
- final StatementConfiguration configuration;
+ final ExecConfiguration configuration;
ExpressionStatementContinuation(this.configuration);
@@ -834,7 +816,7 @@ class PrintContinuation extends ExpressionContinuation {
Configuration call(Value v) {
log.info('print(${v.value.runtimeType}: ${v.value})\n');
print(v.value);
- return new ContinuationConfiguration(continuation, Value.nullInstance);
+ return new ValuePassingConfiguration(continuation, Value.nullInstance);
}
}
@@ -847,7 +829,7 @@ class PropertyGetContinuation extends ExpressionContinuation {
Configuration call(Value receiver) {
// TODO: CPS the invocation of the getter.
Value propertyValue = receiver.class_.lookupGetter(name)(receiver);
- return new ContinuationConfiguration(continuation, propertyValue);
+ return new ValuePassingConfiguration(continuation, propertyValue);
}
}
@@ -862,7 +844,7 @@ class PropertySetContinuation extends ExpressionContinuation {
Configuration call(Value receiver) {
var cont = new SetterContinuation(receiver, setterName, continuation);
- return new ExpressionConfiguration(value, environment, cont);
+ return new EvalConfiguration(value, environment, cont);
}
}
@@ -876,7 +858,7 @@ class SetterContinuation extends ExpressionContinuation {
Configuration call(Value v) {
Setter setter = receiver.class_.lookupSetter(name);
setter(receiver, v);
- return new ContinuationConfiguration(continuation, v);
+ return new ValuePassingConfiguration(continuation, v);
}
}
@@ -894,7 +876,7 @@ class ExpressionListContinuation extends ExpressionContinuation {
Configuration call(Value v) {
ValueApplication app = new ValueApplication(
currentExpression.assignValue(v), applicationContinuation);
- return new ExpressionListConfiguration(expressions, environment, app);
+ return new EvalListConfiguration(expressions, environment, app);
}
}
@@ -910,13 +892,12 @@ class MethodInvocationContinuation extends ExpressionContinuation {
Configuration call(Value receiver) {
if (arguments.positional.isEmpty) {
Value returnValue = receiver.invokeMethod(methodName);
- return new ContinuationConfiguration(continuation, returnValue);
+ return new ValuePassingConfiguration(continuation, returnValue);
}
var cont = new ArgumentsContinuation(
receiver, methodName, arguments, environment, continuation);
- return new ExpressionConfiguration(
- arguments.positional.first, environment, cont);
+ return new EvalConfiguration(arguments.positional.first, environment, cont);
}
}
@@ -934,7 +915,7 @@ class ArgumentsContinuation extends ExpressionContinuation {
// Currently evaluates only one argument, for simple method invocations
// with 1 argument.
Value returnValue = receiver.invokeMethod(methodName, value);
- return new ContinuationConfiguration(continuation, returnValue);
+ return new ValuePassingConfiguration(continuation, returnValue);
}
}
@@ -947,7 +928,7 @@ class VariableSetContinuation extends ExpressionContinuation {
Configuration call(Value value) {
environment.assign(variable, value);
- return new ContinuationConfiguration(continuation, value);
+ return new ValuePassingConfiguration(continuation, value);
}
}
@@ -960,7 +941,7 @@ class NotContinuation extends ExpressionContinuation {
Value notValue = identical(Value.trueInstance, value)
? Value.falseInstance
: Value.trueInstance;
- return new ContinuationConfiguration(continuation, notValue);
+ return new ValuePassingConfiguration(continuation, notValue);
}
}
@@ -973,8 +954,8 @@ class OrContinuation extends ExpressionContinuation {
Configuration call(Value left) {
return identical(Value.trueInstance, left)
- ? new ContinuationConfiguration(continuation, Value.trueInstance)
- : new ExpressionConfiguration(right, environment, continuation);
+ ? new ValuePassingConfiguration(continuation, Value.trueInstance)
+ : new EvalConfiguration(right, environment, continuation);
}
}
@@ -987,8 +968,8 @@ class AndContinuation extends ExpressionContinuation {
Configuration call(Value left) {
return identical(Value.falseInstance, left)
- ? new ContinuationConfiguration(continuation, Value.falseInstance)
- : new ExpressionConfiguration(right, environment, continuation);
+ ? new ValuePassingConfiguration(continuation, Value.falseInstance)
+ : new EvalConfiguration(right, environment, continuation);
}
}
@@ -1003,8 +984,8 @@ class ConditionalContinuation extends ExpressionContinuation {
Configuration call(Value value) {
return identical(Value.trueInstance, value)
- ? new ExpressionConfiguration(then, environment, continuation)
- : new ExpressionConfiguration(otherwise, environment, continuation);
+ ? new EvalConfiguration(then, environment, continuation)
+ : new EvalConfiguration(otherwise, environment, continuation);
}
}
@@ -1018,7 +999,7 @@ class StringConcatenationContinuation extends ApplicationContinuation {
for (InterpreterValue v in values.reversed) {
result.write(v.value.value);
}
- return new ContinuationConfiguration(
+ return new ValuePassingConfiguration(
continuation, new StringValue(result.toString()));
}
}
@@ -1035,7 +1016,7 @@ class LetContinuation extends ExpressionContinuation {
Configuration call(Value value) {
var letEnv = new Environment(environment);
letEnv.expand(variable, value);
- return new ExpressionConfiguration(letBody, letEnv, continuation);
+ return new EvalConfiguration(letBody, letEnv, continuation);
}
}
@@ -1046,13 +1027,12 @@ class WhileConditionContinuation extends ExpressionContinuation {
WhileConditionContinuation(this.node, this.state);
- StatementConfiguration call(Value v) {
+ ExecConfiguration call(Value v) {
if (identical(v, Value.trueInstance)) {
// Add configuration for the While statement to the linked list.
- StatementConfiguration config = new StatementConfiguration(node, state);
+ ExecConfiguration config = new ExecConfiguration(node, state);
// Configuration for the body of the loop.
- return new StatementConfiguration(
- node.body, state.withConfiguration(config));
+ return new ExecConfiguration(node.body, state.withConfiguration(config));
}
return state.statementConfiguration;
@@ -1067,13 +1047,13 @@ class IfConditionContinuation extends ExpressionContinuation {
IfConditionContinuation(this.then, this.otherwise, this.state);
- StatementConfiguration call(Value v) {
+ ExecConfiguration call(Value v) {
if (identical(v, Value.trueInstance)) {
log.info("if-then\n");
- return new StatementConfiguration(then, state);
+ return new ExecConfiguration(then, state);
} else if (otherwise != null) {
log.info("if-otherwise\n");
- return new StatementConfiguration(otherwise, state);
+ return new ExecConfiguration(otherwise, state);
}
return state.statementConfiguration;
}
@@ -1084,12 +1064,12 @@ class IfConditionContinuation extends ExpressionContinuation {
class VariableInitializerContinuation extends ExpressionContinuation {
final VariableDeclaration variable;
final Environment environment;
- final StatementConfiguration nextConfiguration;
+ final ExecConfiguration nextConfiguration;
VariableInitializerContinuation(
this.variable, this.environment, this.nextConfiguration);
- StatementConfiguration call(Value v) {
+ ExecConfiguration call(Value v) {
environment.expand(variable, v);
return nextConfiguration;
}
@@ -1115,7 +1095,7 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
Configuration exec(Statement statement, State state) =>
statement.accept1(this, state);
- Configuration eval(Expression expression, ExpressionConfiguration config) =>
+ Configuration eval(Expression expression, EvalConfiguration config) =>
evaluator.eval(expression, config);
Configuration evalList(
List<InterpreterExpression> es, Environment env, Continuation cont) =>
@@ -1134,8 +1114,7 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
ExpressionStatement node, State state) {
var cont =
new ExpressionStatementContinuation(state.statementConfiguration);
- return new ExpressionConfiguration(
- node.expression, state.environment, cont);
+ return new EvalConfiguration(node.expression, state.environment, cont);
}
Configuration visitBlock(Block node, State state) {
@@ -1144,10 +1123,10 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
}
State blockState =
state.withEnvironment(new Environment(state.environment));
- StatementConfiguration configuration = state.statementConfiguration;
+ ExecConfiguration configuration = state.statementConfiguration;
for (Statement s in node.statements.reversed) {
- configuration = new StatementConfiguration(
- s, blockState.withConfiguration(configuration));
+ configuration =
+ new ExecConfiguration(s, blockState.withConfiguration(configuration));
}
return configuration;
}
@@ -1159,11 +1138,11 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
Configuration visitIfStatement(IfStatement node, State state) {
var cont = new IfConditionContinuation(node.then, node.otherwise, state);
- return new ExpressionConfiguration(node.condition, state.environment, cont);
+ return new EvalConfiguration(node.condition, state.environment, cont);
}
Configuration visitLabeledStatement(LabeledStatement node, State state) {
- return new StatementConfiguration(node.body, state.withBreak(node));
+ return new ExecConfiguration(node.body, state.withBreak(node));
}
Configuration visitBreakStatement(BreakStatement node, State state) {
@@ -1173,16 +1152,16 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
Configuration visitWhileStatement(WhileStatement node, State state) {
var cont = new WhileConditionContinuation(node, state);
- return new ExpressionConfiguration(node.condition, state.environment, cont);
+ return new EvalConfiguration(node.condition, state.environment, cont);
}
Configuration visitDoStatement(DoStatement node, State state) {
WhileStatement whileStatement =
new WhileStatement(node.condition, node.body);
- StatementConfiguration configuration =
- new StatementConfiguration(whileStatement, state);
+ ExecConfiguration configuration =
+ new ExecConfiguration(whileStatement, state);
- return new StatementConfiguration(
+ return new ExecConfiguration(
node.body, state.withConfiguration(configuration));
}
@@ -1190,11 +1169,11 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
assert(state.returnContinuation != null);
log.info('return\n');
if (node.expression == null) {
- return new ContinuationConfiguration(
+ return new ValuePassingConfiguration(
state.returnContinuation, Value.nullInstance);
}
- return new ExpressionConfiguration(
+ return new EvalConfiguration(
node.expression, state.environment, state.returnContinuation);
}
@@ -1203,8 +1182,7 @@ class StatementExecuter extends StatementVisitor1<Configuration, State> {
if (node.initializer != null) {
var cont = new VariableInitializerContinuation(
node, state.environment, state.statementConfiguration);
- return new ExpressionConfiguration(
- node.initializer, state.environment, cont);
+ return new EvalConfiguration(node.initializer, state.environment, cont);
}
state.environment.expand(node, Value.nullInstance);
return state.statementConfiguration;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698