fix Related to UnaryOp and Range for customizer
This commit is contained in:
parent
ece05e318f
commit
b426db8ab1
4 changed files with 20 additions and 7 deletions
18
src/expr.cc
18
src/expr.cc
|
|
@ -112,6 +112,13 @@ const char *UnaryOp::opString() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UnaryOp::isLiteral() const {
|
||||||
|
|
||||||
|
if(this->expr->isLiteral())
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void UnaryOp::print(std::ostream &stream) const
|
void UnaryOp::print(std::ostream &stream) const
|
||||||
{
|
{
|
||||||
stream << opString() << *this->expr;
|
stream << opString() << *this->expr;
|
||||||
|
|
@ -305,6 +312,17 @@ void Range::print(std::ostream &stream) const
|
||||||
stream << "]";
|
stream << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Range::isLiteral() const {
|
||||||
|
if(!this->step){
|
||||||
|
if( begin->isLiteral() && end->isLiteral())
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
if( begin->isLiteral() && end->isLiteral() && step->isLiteral())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Vector::Vector(const Location &loc) : Expression(loc)
|
Vector::Vector(const Location &loc) : Expression(loc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public:
|
||||||
Not,
|
Not,
|
||||||
Negate
|
Negate
|
||||||
};
|
};
|
||||||
virtual bool isLiteral() const { return true;}
|
virtual bool isLiteral() const;
|
||||||
UnaryOp(Op op, Expression *expr, const Location &loc);
|
UnaryOp(Op op, Expression *expr, const Location &loc);
|
||||||
virtual ValuePtr evaluate(const class Context *context) const;
|
virtual ValuePtr evaluate(const class Context *context) const;
|
||||||
virtual void print(std::ostream &stream) const;
|
virtual void print(std::ostream &stream) const;
|
||||||
|
|
@ -111,8 +111,8 @@ public:
|
||||||
Range(Expression *begin, Expression *step, Expression *end, const Location &loc);
|
Range(Expression *begin, Expression *step, Expression *end, const Location &loc);
|
||||||
ValuePtr evaluate(const class Context *context) const;
|
ValuePtr evaluate(const class Context *context) const;
|
||||||
virtual void print(std::ostream &stream) const;
|
virtual void print(std::ostream &stream) const;
|
||||||
|
virtual bool isLiteral() const;
|
||||||
private:
|
private:
|
||||||
virtual bool isLiteral() const { return true;}
|
|
||||||
shared_ptr<Expression> begin;
|
shared_ptr<Expression> begin;
|
||||||
shared_ptr<Expression> step;
|
shared_ptr<Expression> step;
|
||||||
shared_ptr<Expression> end;
|
shared_ptr<Expression> end;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
#include "parameterset.h"
|
#include "parameterset.h"
|
||||||
#include "comment.h"
|
#include "comment.h"
|
||||||
#include "modcontext.h"
|
#include "modcontext.h"
|
||||||
#include "filemodule.h"
|
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
|
|
||||||
#include <boost/property_tree/json_parser.hpp>
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,7 @@ t = (c > d);
|
||||||
u = (e && g);
|
u = (e && g);
|
||||||
v = (e || g);
|
v = (e || g);
|
||||||
w = i;
|
w = i;
|
||||||
@Description("description")
|
|
||||||
@Parameter("parameter")
|
|
||||||
x = -i;
|
x = -i;
|
||||||
@Description("description")
|
|
||||||
@Parameter("parameter")
|
|
||||||
y = !i;
|
y = !i;
|
||||||
z = j;
|
z = j;
|
||||||
aa = (k ? l : m);
|
aa = (k ? l : m);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue