Some work on Expression and Operand.
This commit is contained in:
parent
ea3d1a7ad0
commit
8475ef01d1
@ -1,24 +1,29 @@
|
|||||||
#include "Expression.h"
|
#include "Expression.h"
|
||||||
|
#include "Operand.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
namespace jet {
|
namespace jet {
|
||||||
|
|
||||||
Expression::Expression(coreutils::ZString &expression) : MString() {
|
Expression::Expression(coreutils::ZString &in) : MString() {
|
||||||
std::cout << "Expression construction:" << expression << std::endl;
|
std::cout << "Expression construction:" << in << std::endl;
|
||||||
|
|
||||||
if(isNumber(0, expression)) {
|
Operand op1(in);
|
||||||
|
|
||||||
} else if(expression.equals("true"))
|
boolean = op1.boolean;
|
||||||
write(expression);
|
|
||||||
else if(expression.equals("false"))
|
|
||||||
write(expression);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Expression::~Expression() {}
|
Expression::~Expression() {}
|
||||||
|
|
||||||
bool Expression::isNumber(int reg, coreutils::ZString &expression) {
|
bool Expression::getBooleanResult() {
|
||||||
|
return boolean;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
double Expression::getNumericResult() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
coreutils::ZString Expression::getStringResult() {
|
||||||
|
return coreutils::ZString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,13 @@ namespace jet {
|
|||||||
class Expression : public coreutils::MString {
|
class Expression : public coreutils::MString {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Expression(coreutils::ZString &expression);
|
Expression(coreutils::ZString &in);
|
||||||
virtual ~Expression();
|
virtual ~Expression();
|
||||||
|
|
||||||
private:
|
bool getBooleanResult();
|
||||||
bool isNumber(int reg, coreutils::ZString &expression);
|
double getNumericResult();
|
||||||
|
coreutils::ZString getStringResult();
|
||||||
|
bool boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
36
Operand.cpp
Normal file
36
Operand.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "Operand.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
Operand::Operand(coreutils::ZString &in) {
|
||||||
|
|
||||||
|
if(in.ifNext("true")) {
|
||||||
|
boolean = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(in.ifNext("false")) {
|
||||||
|
boolean = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(in.ifNext("+")) {
|
||||||
|
}
|
||||||
|
if(in.ifNext("-")) {
|
||||||
|
}
|
||||||
|
if(in.getTokenInclude("0123456789")) {
|
||||||
|
}
|
||||||
|
if(in.ifNext(".")) {
|
||||||
|
}
|
||||||
|
if(in.getTokenInclude("0123456789")) {
|
||||||
|
}
|
||||||
|
|
||||||
|
if(in.ifNext("\"")) {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
35
Operand.h
Normal file
35
Operand.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#ifndef __Operand_h__
|
||||||
|
#define __Operand_h__
|
||||||
|
|
||||||
|
#include "ZString.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
class Operand {
|
||||||
|
|
||||||
|
public:
|
||||||
|
Operand(coreutils::ZString &in);
|
||||||
|
|
||||||
|
bool isNumber();
|
||||||
|
bool isInteger();
|
||||||
|
bool isFloat();
|
||||||
|
bool isString();
|
||||||
|
bool isVariable();
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// boolean is set by internal processes to return the boolean
|
||||||
|
/// equivilent value.
|
||||||
|
///
|
||||||
|
|
||||||
|
bool boolean;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// dataType enum ={};
|
||||||
|
double doubleValue;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
4
__if.cpp
4
__if.cpp
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
#include "__if.h"
|
#include "__if.h"
|
||||||
#include "Exception.h"
|
#include "Exception.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -15,11 +14,12 @@ namespace jet {
|
|||||||
throw coreutils::Exception("Either value1 or expr can be specified but not both.");
|
throw coreutils::Exception("Either value1 or expr can be specified but not both.");
|
||||||
if(variableDefined("value2")) {
|
if(variableDefined("value2")) {
|
||||||
if(variableDefined("type")) {
|
if(variableDefined("type")) {
|
||||||
result = "true";
|
result = Expression(variables["expr"]);
|
||||||
} else
|
} else
|
||||||
throw coreutils::Exception("type expected if value1 and value2 specified.");
|
throw coreutils::Exception("type expected if value1 and value2 specified.");
|
||||||
} else
|
} else
|
||||||
throw coreutils::Exception("value2 required if value1 specified.");
|
throw coreutils::Exception("value2 required if value1 specified.");
|
||||||
|
std::cout << variables["value1"].str() << "' and value2 '" << variables["value2"].str() << "' comparison" << std::endl;
|
||||||
} else if(variableDefined("expr")) {
|
} else if(variableDefined("expr")) {
|
||||||
if(variableDefined("value2"))
|
if(variableDefined("value2"))
|
||||||
throw coreutils::Exception("value2 should not be specified with expr.");
|
throw coreutils::Exception("value2 should not be specified with expr.");
|
||||||
|
@ -18,7 +18,7 @@ int main(int argc, char **argv) {
|
|||||||
" >>>$[thename]<<<\n"
|
" >>>$[thename]<<<\n"
|
||||||
" local: >>>#[name]<<<\n"
|
" local: >>>#[name]<<<\n"
|
||||||
" <mysql key=\"uu\">\n"
|
" <mysql key=\"uu\">\n"
|
||||||
" <if value1=\"X\" value2=\"Y\" type=\"eq\">\n"
|
" <if value1=\"X\" value2=\"Y\" type=\"ne\">\n"
|
||||||
" 789\n"
|
" 789\n"
|
||||||
" <if expr=\"false\">\n"
|
" <if expr=\"false\">\n"
|
||||||
" 123\n"
|
" 123\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user