From a170eb4450ba6c130532efd25edbf7ed628510d6 Mon Sep 17 00:00:00 2001 From: tijani Date: Mon, 8 Aug 2022 11:01:32 +0000 Subject: [PATCH] Infix evaluation operation now supported. git-svn-id: https://svn.tlawal.org/svn/monkey@47 f6afcba9-9ef1-4bdd-9b72-7484f5705bac --- evaluator/evaluator.go | 10 ++++++++++ evaluator/evaluator_test.go | 3 +++ 2 files changed, 13 insertions(+) diff --git a/evaluator/evaluator.go b/evaluator/evaluator.go index 632ad2b..241c241 100644 --- a/evaluator/evaluator.go +++ b/evaluator/evaluator.go @@ -56,6 +56,8 @@ func eval_prefix_expression(operator string, right object.Object) object.Object switch operator { case "!": return eval_bang_operator_expression(right) + case "-": + return eval_minus_prefix_operator_expression(right) default: return NULL @@ -77,3 +79,11 @@ func eval_bang_operator_expression(right object.Object) object.Object { return FALSE } } + +func eval_minus_prefix_operator_expression(right object.Object) object.Object { + if right.Type() != object.INTEGER_OBJECT{ + return NULL + } + value := right.(*object.Integer).Value + return &object.Integer{Value: -value} +} diff --git a/evaluator/evaluator_test.go b/evaluator/evaluator_test.go index cb6e505..63055ff 100644 --- a/evaluator/evaluator_test.go +++ b/evaluator/evaluator_test.go @@ -14,6 +14,9 @@ func TestEvalIntegerExpression(l_test *testing.T) { }{ {"5", 5}, {"10", 10}, + {"-10", -10}, + {"-5", -5}, + } for _, tt := range tests {