finish operation vector building
This commit is contained in:
+17
-24
@@ -87,9 +87,9 @@ class Parser
|
||||
|
||||
public:
|
||||
char buffer[256];
|
||||
std::shared_ptr<std::vector<Expression::Token>>& pv;
|
||||
std::vector<Expression::Token>& pv;
|
||||
|
||||
Parser(std::shared_ptr<std::vector<Expression::Token>>& pv)
|
||||
Parser(std::vector<Expression::Token>& pv)
|
||||
: s(I), pv(pv)
|
||||
{
|
||||
buf_clear();
|
||||
@@ -210,7 +210,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
pv->push_back(Expression::Token(value));
|
||||
pv.push_back(Expression::Token(value));
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -234,7 +234,7 @@ public:
|
||||
}
|
||||
int leave_rv(void)
|
||||
{
|
||||
pv->push_back(Expression::Token(buffer));
|
||||
pv.push_back(Expression::Token(buffer));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -261,37 +261,37 @@ public:
|
||||
{
|
||||
if (!strcmp(buffer, "("))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::OPA));
|
||||
pv.push_back(Expression::Token(Expression::Token::OPA));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, ")"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::CPA));
|
||||
pv.push_back(Expression::Token(Expression::Token::CPA));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, "+"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::ADD));
|
||||
pv.push_back(Expression::Token(Expression::Token::ADD));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, "-"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::SUB));
|
||||
pv.push_back(Expression::Token(Expression::Token::SUB));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, "*"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::MUL));
|
||||
pv.push_back(Expression::Token(Expression::Token::MUL));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, "/"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::DIV));
|
||||
pv.push_back(Expression::Token(Expression::Token::DIV));
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(buffer, "**"))
|
||||
{
|
||||
pv->push_back(Expression::Token(Expression::Token::POW));
|
||||
pv.push_back(Expression::Token(Expression::Token::POW));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -308,9 +308,9 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
std::shared_ptr<std::vector<Expression::Token>> tokenize_input(const char * const input_string)
|
||||
std::vector<Expression::Token> tokenize_input(const char * const input_string)
|
||||
{
|
||||
std::shared_ptr<std::vector<Expression::Token>> pv = std::make_shared<std::vector<Expression::Token>>();
|
||||
std::vector<Expression::Token> pv;
|
||||
|
||||
Parser p(pv);
|
||||
for (int i = 0, l = strlen(input_string) + 1; i < l; i++)
|
||||
@@ -361,8 +361,12 @@ int assert_same(const std::vector<Expression::Token>& a, const std::vector<Expre
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
pr_warn("Token skipped");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -377,15 +381,4 @@ void print_token_vector(const std::vector<Expression::Token>& tv)
|
||||
std::cout << "(" << *tv[i].to_str() << ")\n";
|
||||
}
|
||||
|
||||
void print_token_vector(const std::vector<Expression::Token>& tv, const std::vector<unsigned char>& colorcoding)
|
||||
{
|
||||
int i, l;
|
||||
for (i = 0, l = tv.size() - 1; i < l; i++)
|
||||
{
|
||||
std::cout << "(" << *tv[i].to_str() << ") ";
|
||||
}
|
||||
|
||||
std::cout << "(" << *tv[i].to_str() << ")\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user