Bob/headers/Interpreter.h

26 lines
704 B
C++

#pragma once
#include "Expression.h"
#include "helperFunctions/ShortHands.h"
#include "TypeWrapper.h"
class Interpreter : Visitor
{
public:
sptr(Object) visitBinaryExpr(sptr(BinaryExpr) expression) override;
sptr(Object) visitGroupingExpr(sptr(GroupingExpr) expression) override;
sptr(Object) visitLiteralExpr(sptr(LiteralExpr) expression) override;
sptr(Object) visitUnaryExpr(sptr(UnaryExpr) expression) override;
void interpret(sptr(Expr) expr);
private:
sptr(Object) evaluate(sptr(Expr) expr);
bool isTruthy(sptr(Object) object);
bool isEqual(sptr(Object) a, sptr(Object) b);
std::string stringify(sptr(Object) object);
bool isWholeNumer(double num);
};