From 80394e184274eb8ec3ce03cd901e5c817ec82e2a Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Mon, 18 Jan 2021 17:42:02 -0800 Subject: Add break statement --- src/com/craftinginterpreters/lox/Interpreter.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/com/craftinginterpreters/lox/Interpreter.java') diff --git a/src/com/craftinginterpreters/lox/Interpreter.java b/src/com/craftinginterpreters/lox/Interpreter.java index 9d0cfb3..22c8d4a 100644 --- a/src/com/craftinginterpreters/lox/Interpreter.java +++ b/src/com/craftinginterpreters/lox/Interpreter.java @@ -161,13 +161,22 @@ class Interpreter implements Expr.Visitor, Stmt.Visitor { @Override public Void visitWhileStmt(Stmt.While stmt) { - while (isTruthy(evaluate(stmt.condition))) { - execute(stmt.body); + try { + while (isTruthy(evaluate(stmt.condition))) { + execute(stmt.body); + } + } catch (Break ex) { + // We continue on. } return null; } + @Override + public Void visitBreakStmt(Stmt.Break stmt) { + throw new Break(); + } + @Override public Object visitAssignExpr(Expr.Assign expr) { Object value = evaluate(expr.value); -- cgit v1.2.3-54-g00ecf