+#include <msp/core/maputils.h>
#include "syntax.h"
#include "visitor.h"
const Operator Operator::operators[] =
{
{ "[", 2, BINARY, LEFT_TO_RIGHT },
- { "(", 2, BINARY, LEFT_TO_RIGHT },
+ { "(", 2, POSTFIX, LEFT_TO_RIGHT },
{ ".", 2, BINARY, LEFT_TO_RIGHT },
{ "++", 2, POSTFIX, LEFT_TO_RIGHT },
{ "--", 2, POSTFIX, LEFT_TO_RIGHT },
{ { 0 }, 18, NO_OPERATOR, LEFT_TO_RIGHT }
};
+const Operator &Operator::get_operator(const string &token, Type type)
+{
+ for(const Operator *i=operators; i->type; ++i)
+ if(i->type==type && i->token==token)
+ return *i;
+ throw key_error(token);
+}
+
template<typename C>
NodeContainer<C>::NodeContainer(const NodeContainer &c):
}
+Expression::Expression():
+ oper(0)
+{ }
+
+
void Literal::visit(NodeVisitor &visitor)
{
visitor.visit(*this);
}
-UnaryExpression::UnaryExpression():
- prefix(true)
-{ }
-
void UnaryExpression::visit(NodeVisitor &visitor)
{
visitor.visit(*this);