Package tech.ixor.calclox
Class Resolver
java.lang.Object
tech.ixor.calclox.Resolver
- All Implemented Interfaces:
Expr.Visitor<Void>,Statement.Visitor<Void>
Resolves lexical variable references before interpretation.
The resolver computes each local expression's environment depth and rejects invalid constructs such as duplicate local declarations, self-initialization, and top-level return statements.
-
Method Summary
Modifier and TypeMethodDescriptionvoidResolves all statements in source order.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)
-
Method Details
-
resolve
Resolves all statements in source order.- Parameters:
statements- parsed program- Throws:
CalcLoxRunnerError- if the program violates lexical-scope rules
-
visitAssignExpr
- Specified by:
visitAssignExprin interfaceExpr.Visitor<Void>
-
visitBinaryExpr
- Specified by:
visitBinaryExprin interfaceExpr.Visitor<Void>
-
visitCallExpr
- Specified by:
visitCallExprin interfaceExpr.Visitor<Void>
-
visitGroupingExpr
- Specified by:
visitGroupingExprin interfaceExpr.Visitor<Void>
-
visitLiteralExpr
- Specified by:
visitLiteralExprin interfaceExpr.Visitor<Void>
-
visitLogicalExpr
- Specified by:
visitLogicalExprin interfaceExpr.Visitor<Void>
-
visitUnaryExpr
- Specified by:
visitUnaryExprin interfaceExpr.Visitor<Void>
-
visitVariableExpr
- Specified by:
visitVariableExprin interfaceExpr.Visitor<Void>
-
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>
-