Package tech.ixor.calclox
Class Interpreter
java.lang.Object
tech.ixor.calclox.Interpreter
- All Implemented Interfaces:
Expr.Visitor<Object>,Statement.Visitor<Void>
Executes resolved CalcLox syntax trees against lexical environments.
The interpreter owns the globals for one run, installs the native clock
and eval functions, forwards output to a CalculatorFrontend, and
synchronizes numeric declarations and assignments with the frontend variable map.
Instances are stateful and are not intended to be shared between runs.
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal EnvironmentGlobal environment containing native functions and top-level declarations. -
Constructor Summary
ConstructorsConstructorDescriptionInterpreter(CalculatorFrontend calculatorFrontend) Creates an interpreter connected to a host frontend. -
Method Summary
Modifier and TypeMethodDescriptionvoidexecuteBlock(List<Statement> statements, Environment environment) Executes a block in a temporary environment and restores the previous environment even when execution exits through an error or function return.voidExecutes statements sequentially and converts internal runtime failures to the publicCalcLoxRunnerErrortype.voidRecords the lexical distance computed for a local expression byResolver.visitAssignExpr(Expr.Assign expr) visitBinaryExpr(Expr.Binary expr) visitBlockStatement(Statement.Block statement) visitCallExpr(Expr.Call expr) visitDefineStatement(Statement.Define statement) visitExpressionStatement(Statement.Expression statement) visitFunctionStatement(Statement.Function statement) visitIfStatement(Statement.If statement) visitLiteralExpr(Expr.Literal expr) visitLogicalExpr(Expr.Logical expr) visitOutputStatement(Statement.Output statement) visitReturnStatement(Statement.Return statement) visitUnaryExpr(Expr.Unary expr) visitVarStatement(Statement.Var statement) visitWhileStatement(Statement.While statement)
-
Field Details
-
globals
Global environment containing native functions and top-level declarations.
-
-
Constructor Details
-
Interpreter
Creates an interpreter connected to a host frontend.- Parameters:
calculatorFrontend- frontend that supplies variables and receives output
-
-
Method Details
-
interpret
Executes statements sequentially and converts internal runtime failures to the publicCalcLoxRunnerErrortype.- Parameters:
statements- resolved statements to execute
-
resolve
Records the lexical distance computed for a local expression byResolver.- Parameters:
expr- local variable expressiondepth- number of enclosing environments between the expression and declaration
-
executeBlock
Executes a block in a temporary environment and restores the previous environment even when execution exits through an error or function return.- Parameters:
statements- block bodyenvironment- lexical environment for the block
-
visitAssignExpr
- Specified by:
visitAssignExprin interfaceExpr.Visitor<Object>
-
visitBinaryExpr
- Specified by:
visitBinaryExprin interfaceExpr.Visitor<Object>
-
visitCallExpr
- Specified by:
visitCallExprin interfaceExpr.Visitor<Object>
-
visitGroupingExpr
- Specified by:
visitGroupingExprin interfaceExpr.Visitor<Object>
-
visitLiteralExpr
- Specified by:
visitLiteralExprin interfaceExpr.Visitor<Object>
-
visitLogicalExpr
- Specified by:
visitLogicalExprin interfaceExpr.Visitor<Object>
-
visitUnaryExpr
- Specified by:
visitUnaryExprin interfaceExpr.Visitor<Object>
-
visitVariableExpr
- Specified by:
visitVariableExprin interfaceExpr.Visitor<Object>
-
visitBlockStatement
- Specified by:
visitBlockStatementin interfaceStatement.Visitor<Void>
-
visitDefineStatement
- Specified by:
visitDefineStatementin interfaceStatement.Visitor<Void>
-
visitExpressionStatement
- Specified by:
visitExpressionStatementin interfaceStatement.Visitor<Void>
-
visitFunctionStatement
- Specified by:
visitFunctionStatementin interfaceStatement.Visitor<Void>
-
visitIfStatement
- Specified by:
visitIfStatementin interfaceStatement.Visitor<Void>
-
visitOutputStatement
- Specified by:
visitOutputStatementin interfaceStatement.Visitor<Void>
-
visitReturnStatement
- Specified by:
visitReturnStatementin interfaceStatement.Visitor<Void>
-
visitVarStatement
- Specified by:
visitVarStatementin interfaceStatement.Visitor<Void>
-
visitWhileStatement
- Specified by:
visitWhileStatementin interfaceStatement.Visitor<Void>
-