JetCore/Expression.cpp
2024-09-18 16:52:08 -07:00

52 lines
1.2 KiB
C++

#include "Expression.h"
#include "Operand.h"
#include "Exception.h"
#include <iostream>
namespace jet {
Expression::Expression(coreutils::ZString &in) : MString() {
std::cout << "Expression construction:" << in << std::endl;
Operand op1(in);
boolean = op1.boolean;
string = op1.string;
if(in.unparsed().getLength() > 0) {
std::cout << "1)" << in.unparsed() << "(" << std::endl;
if(in.ifNext("+"))
operation = (char *)"+";
else if(in.ifNext("-"))
operation = (char *)"-";
else
throw coreutils::Exception("Expecting operator.");
in.skipWhitespace();
if(in.unparsed().getLength() == 0)
throw coreutils::Exception("Expecting operand.");
Operand op2(in);
std::cout << op1.string << ":" << operation << ":" << op2.string << std::endl;
}
std::cout << "Leaving expression string: " << string << std::endl;
std::cout << "Unparsed: [" << in.unparsed() << "]" << std::endl;
}
Expression::~Expression() {}
bool Expression::getBooleanResult() {
return boolean;
}
double Expression::getNumericResult() {
return 0;
}
coreutils::ZString Expression::getStringResult() {
return coreutils::ZString();
}
}