Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 710b444

Browse files
committedDec 14, 2024
Readability fixes
1 parent d0bcc8a commit 710b444

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed
 

‎interpreter.py

+18-18
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@ def visitSimpleStatement(self, ctx: MyParser.SimpleStatementContext):
1717
return self.visitChildren(ctx) # todo
1818

1919
def visitIfThenElse(self, ctx: MyParser.IfThenElseContext):
20-
condition = self.visit(ctx.getChild(0))
20+
condition = self.visit(ctx.if_())
2121
if condition:
22-
return self.visit(ctx.getChild(1))
23-
elif ctx.getChildCount() == 3:
24-
return self.visit(ctx.getChild(2))
22+
return self.visit(ctx.then())
23+
elif ctx.else_() is not None:
24+
return self.visit(ctx.else_())
2525

2626
def visitIf(self, ctx: MyParser.IfContext):
27-
return self.visit(ctx.getChild(2))
27+
return self.visit(ctx.comparison())
2828

2929
def visitElse(self, ctx: MyParser.ElseContext):
30-
return self.visit(ctx.getChild(1))
30+
return self.visit(ctx.statement())
3131

3232
def visitForLoop(self, ctx: MyParser.ForLoopContext):
3333
return self.visitChildren(ctx) # todo
@@ -39,8 +39,8 @@ def visitWhileLoop(self, ctx: MyParser.WhileLoopContext):
3939
return self.visitChildren(ctx) # todo
4040

4141
def visitComparison(self, ctx: MyParser.ComparisonContext):
42-
a = self.visit(ctx.getChild(0))
43-
b = self.visit(ctx.getChild(2))
42+
a = self.visit(ctx.expression(0))
43+
b = self.visit(ctx.expression(1))
4444
match ctx.getChild(1).symbol.type:
4545
case MyParser.EQ:
4646
return a == b
@@ -62,8 +62,8 @@ def visitCompoundAssignment(self, ctx: MyParser.CompoundAssignmentContext):
6262
return self.visitChildren(ctx) # todo
6363

6464
def visitPrint(self, ctx: MyParser.PrintContext):
65-
for i in range(1, ctx.getChildCount() - 1, 2):
66-
print(str(self.visit(ctx.getChild(i))))
65+
for i in range(ctx.getChildCount() // 2):
66+
print(str(self.visit(ctx.expression(i))))
6767

6868
def visitReturn(self, ctx: MyParser.ReturnContext):
6969
if ctx.expression() is not None:
@@ -74,8 +74,8 @@ def visitReturn(self, ctx: MyParser.ReturnContext):
7474
sys.exit()
7575

7676
def visitBinaryExpression(self, ctx: MyParser.BinaryExpressionContext):
77-
a = self.visit(ctx.getChild(0))
78-
b = self.visit(ctx.getChild(2))
77+
a = self.visit(ctx.expression(0))
78+
b = self.visit(ctx.expression(1))
7979
match ctx.op.type:
8080
case MyParser.PLUS:
8181
return a + b
@@ -88,21 +88,21 @@ def visitBinaryExpression(self, ctx: MyParser.BinaryExpressionContext):
8888
# todo: MAT_* operations
8989

9090
def visitParenthesesExpression(self, ctx: MyParser.ParenthesesExpressionContext):
91-
return self.visit(ctx.getChild(1))
91+
return self.visit(ctx.expression())
9292

9393
def visitTransposeExpression(self, ctx: MyParser.TransposeExpressionContext):
94-
vector = self.visit(ctx.getChild(0))
94+
vector = self.visit(ctx.expression())
9595
if not isinstance(vector, Vector):
9696
raise TypeError
9797
return vector.transpose()
9898

9999
def visitMinusExpression(self, ctx: MyParser.MinusExpressionContext):
100-
return -self.visit(ctx.getChild(1))
100+
return -self.visit(ctx.expression())
101101

102102
def visitSpecialMatrixFunction(self, ctx: MyParser.SpecialMatrixFunctionContext):
103103
fname = ctx.getChild(0).symbol.type
104104
if fname == MyParser.EYE:
105-
dim = self.visit(ctx.getChild(2))
105+
dim = self.visit(ctx.expression(0))
106106
if not isinstance(dim, Int):
107107
raise TypeError
108108
rows = [
@@ -112,7 +112,7 @@ def visitSpecialMatrixFunction(self, ctx: MyParser.SpecialMatrixFunctionContext)
112112
return Vector(rows)
113113
else:
114114
dims = [
115-
self.visit(ctx.getChild(i)) for i in range(2, ctx.getChildCount(), 2)
115+
self.visit(ctx.expression(i)) for i in range(ctx.getChildCount() // 2 - 1)
116116
]
117117
if {type(dim) for dim in dims} != {Int}:
118118
raise TypeError
@@ -129,7 +129,7 @@ def visitContinue(self, ctx: MyParser.ContinueContext):
129129

130130
def visitVector(self, ctx: MyParser.VectorContext):
131131
elements = [
132-
self.visit(ctx.getChild(i)) for i in range(1, ctx.getChildCount() - 1, 2)
132+
self.visit(ctx.expression(i)) for i in range(ctx.getChildCount() // 2)
133133
]
134134
return Vector(elements)
135135

0 commit comments

Comments
 (0)