|
@@ -2,102 +2,100 @@
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
-TokenTypeClass::TokenTypeClass(string name, int level) : typeName(name)
|
|
|
-{
|
|
|
- this->level = level;
|
|
|
-}
|
|
|
-
|
|
|
-TokenTypeClass::TokenTypeClass(string name) : typeName(name)
|
|
|
+TokenTypeClass::~TokenTypeClass()
|
|
|
{
|
|
|
- level = -1;
|
|
|
}
|
|
|
|
|
|
-TokenTypeClass::TokenTypeClass(const TokenTypeClass& orig)
|
|
|
+string TokenTypeClass::getName() const
|
|
|
{
|
|
|
+ return typeName;
|
|
|
}
|
|
|
|
|
|
-TokenTypeClass::~TokenTypeClass()
|
|
|
+int TokenTypeClass::getLevel() const
|
|
|
{
|
|
|
+ return level;
|
|
|
}
|
|
|
|
|
|
-string TokenTypeClass::getName() const
|
|
|
+bool TokenTypeClass::operator==(const TokenTypeClass& t) const
|
|
|
{
|
|
|
- return typeName;
|
|
|
+ return this == &t;
|
|
|
}
|
|
|
|
|
|
-int TokenTypeClass::getLevel() const
|
|
|
+bool TokenTypeClass::operator!=(const TokenTypeClass& t) const
|
|
|
{
|
|
|
- return level;
|
|
|
+ return this != &t;
|
|
|
}
|
|
|
|
|
|
-std::ostream& operator<<(std::ostream& os, TokenType& c)
|
|
|
+std::ostream& operator<<(std::ostream& os, const TokenType& c)
|
|
|
{
|
|
|
- return os << c->getName();
|
|
|
+ return os << c.getName();
|
|
|
}
|
|
|
|
|
|
namespace Tokens
|
|
|
{
|
|
|
- TokenType FLOAT = new const TokenTypeClass("float");
|
|
|
- TokenType TRUE = new const TokenTypeClass("true");
|
|
|
- TokenType FALSE = new const TokenTypeClass("false");
|
|
|
- TokenType TNULL = new const TokenTypeClass("null");
|
|
|
- TokenType TEXT = new const TokenTypeClass("String");
|
|
|
- TokenType LABEL = new const TokenTypeClass("Label");
|
|
|
- TokenType VAR = new const TokenTypeClass("var");
|
|
|
- TokenType GLOBAL = new const TokenTypeClass("$");
|
|
|
+ const TokenTypeClass FLOAT("float");
|
|
|
+ const TokenTypeClass TRUE("bool(true)");
|
|
|
+ const TokenTypeClass FALSE("bool(false)");
|
|
|
+ const TokenTypeClass TNULL("null");
|
|
|
+ const TokenTypeClass TEXT("String");
|
|
|
+ const TokenTypeClass LABEL("Label");
|
|
|
+ const TokenTypeClass VAR("var");
|
|
|
+ const TokenTypeClass GLOBAL("$");
|
|
|
|
|
|
- TokenType INC = new const TokenTypeClass("++", 2);
|
|
|
- TokenType DEC = new const TokenTypeClass("--", 2);
|
|
|
- TokenType INVERT = new const TokenTypeClass("!", 2);
|
|
|
- TokenType BIT_INVERT = new const TokenTypeClass("~", 2);
|
|
|
- TokenType MUL = new const TokenTypeClass("*", 3);
|
|
|
- TokenType DIV = new const TokenTypeClass("/", 3);
|
|
|
- TokenType MOD = new const TokenTypeClass("%", 3);
|
|
|
- TokenType ADD = new const TokenTypeClass("+", 4);
|
|
|
- TokenType SUB = new const TokenTypeClass("-", 4);
|
|
|
- TokenType LEFT_SHIFT = new const TokenTypeClass("<<", 5);
|
|
|
- TokenType RIGHT_SHIFT = new const TokenTypeClass(">>", 5);
|
|
|
- TokenType LESS = new const TokenTypeClass("<", 6);
|
|
|
- TokenType LESS_EQUAL = new const TokenTypeClass("<=", 6);
|
|
|
- TokenType GREATER = new const TokenTypeClass(">", 6);
|
|
|
- TokenType GREATER_EQUAL = new const TokenTypeClass(">=", 6);
|
|
|
- TokenType EQUAL = new const TokenTypeClass("==", 7);
|
|
|
- TokenType NOT_EQUAL = new const TokenTypeClass("!=", 7);
|
|
|
- TokenType BIT_AND = new const TokenTypeClass("&", 8);
|
|
|
- TokenType BIT_XOR = new const TokenTypeClass("^", 9);
|
|
|
- TokenType BIT_OR = new const TokenTypeClass("|", 10);
|
|
|
- TokenType AND = new const TokenTypeClass("&&", 11);
|
|
|
- TokenType OR = new const TokenTypeClass("||", 12);
|
|
|
- TokenType SET = new const TokenTypeClass("=", 14);
|
|
|
- TokenType ADD_SET = new const TokenTypeClass("+=", 14);
|
|
|
- TokenType SUB_SET = new const TokenTypeClass("-=", 14);
|
|
|
- TokenType MUL_SET = new const TokenTypeClass("*=", 14);
|
|
|
- TokenType DIV_SET = new const TokenTypeClass("/=", 14);
|
|
|
- TokenType MOD_SET = new const TokenTypeClass("%=", 14);
|
|
|
- TokenType LEFT_SHIFT_SET = new const TokenTypeClass("<<=", 14);
|
|
|
- TokenType RIGHT_SHIFT_SET = new const TokenTypeClass(">>=", 14);
|
|
|
- TokenType BIT_AND_SET = new const TokenTypeClass("&=", 14);
|
|
|
- TokenType BIT_XOR_SET = new const TokenTypeClass("^=", 14);
|
|
|
- TokenType BIT_OR_SET = new const TokenTypeClass("|=", 14);
|
|
|
- TokenType COMMA = new const TokenTypeClass(",", 15);
|
|
|
- TokenType OPEN_BRACKET = new const TokenTypeClass("(", 1);
|
|
|
- TokenType CLOSE_BRACKET = new const TokenTypeClass(")", 1);
|
|
|
- TokenType OPEN_SQUARE_BRACKET = new const TokenTypeClass("[", 1);
|
|
|
- TokenType CLOSE_SQUARE_BRACKET = new const TokenTypeClass("]", 1);
|
|
|
- TokenType OPEN_CURVED_BRACKET = new const TokenTypeClass("{");
|
|
|
- TokenType CLOSE_CURVED_BRACKET = new const TokenTypeClass("}");
|
|
|
- TokenType SEMICOLON = new const TokenTypeClass(";");
|
|
|
+ const TokenTypeClass INC("++", 2);
|
|
|
+ const TokenTypeClass DEC("--", 2);
|
|
|
+ const TokenTypeClass INVERT("!", 2);
|
|
|
+ const TokenTypeClass BIT_INVERT("~", 2);
|
|
|
+ const TokenTypeClass MUL("*", 3);
|
|
|
+ const TokenTypeClass DIV("/", 3);
|
|
|
+ const TokenTypeClass MOD("%", 3);
|
|
|
+ const TokenTypeClass UNARY_ADD("u+", 2);
|
|
|
+ const TokenTypeClass UNARY_SUB("u-", 2);
|
|
|
+ const TokenTypeClass ADD("+", 4);
|
|
|
+ const TokenTypeClass SUB("-", 4);
|
|
|
+ const TokenTypeClass LEFT_SHIFT("<<", 5);
|
|
|
+ const TokenTypeClass RIGHT_SHIFT(">>", 5);
|
|
|
+ const TokenTypeClass LESS("<", 6);
|
|
|
+ const TokenTypeClass LESS_EQUAL("<=", 6);
|
|
|
+ const TokenTypeClass GREATER(">", 6);
|
|
|
+ const TokenTypeClass GREATER_EQUAL(">=", 6);
|
|
|
+ const TokenTypeClass EQUAL("==", 7);
|
|
|
+ const TokenTypeClass NOT_EQUAL("!=", 7);
|
|
|
+ const TokenTypeClass BIT_AND("&", 8);
|
|
|
+ const TokenTypeClass BIT_XOR("^", 9);
|
|
|
+ const TokenTypeClass BIT_OR("|", 10);
|
|
|
+ const TokenTypeClass AND("&&", 11);
|
|
|
+ const TokenTypeClass OR("||", 12);
|
|
|
+ const TokenTypeClass SET("=", 14);
|
|
|
+ const TokenTypeClass ADD_SET("+=", 14);
|
|
|
+ const TokenTypeClass SUB_SET("-=", 14);
|
|
|
+ const TokenTypeClass MUL_SET("*=", 14);
|
|
|
+ const TokenTypeClass DIV_SET("/=", 14);
|
|
|
+ const TokenTypeClass MOD_SET("%=", 14);
|
|
|
+ const TokenTypeClass LEFT_SHIFT_SET("<<=", 14);
|
|
|
+ const TokenTypeClass RIGHT_SHIFT_SET(">>=", 14);
|
|
|
+ const TokenTypeClass BIT_AND_SET("&=", 14);
|
|
|
+ const TokenTypeClass BIT_XOR_SET("^=", 14);
|
|
|
+ const TokenTypeClass BIT_OR_SET("|=", 14);
|
|
|
+ const TokenTypeClass COMMA(",", 15);
|
|
|
+ const TokenTypeClass OPEN_BRACKET("(", 50);
|
|
|
+ const TokenTypeClass CLOSE_BRACKET(")", 50);
|
|
|
+ const TokenTypeClass OPEN_SQUARE_BRACKET("[", 1);
|
|
|
+ const TokenTypeClass CLOSE_SQUARE_BRACKET("]", 1);
|
|
|
+ const TokenTypeClass OPEN_CURVED_BRACKET("{");
|
|
|
+ const TokenTypeClass CLOSE_CURVED_BRACKET("}");
|
|
|
+ const TokenTypeClass SEMICOLON(";");
|
|
|
|
|
|
- TokenType IF = new const TokenTypeClass("if");
|
|
|
- TokenType ELSE_IF = new const TokenTypeClass("else if");
|
|
|
- TokenType ELSE = new const TokenTypeClass("else");
|
|
|
- TokenType FOR = new const TokenTypeClass("for");
|
|
|
- TokenType WHILE = new const TokenTypeClass("while");
|
|
|
- TokenType FUNCTION = new const TokenTypeClass("function");
|
|
|
- TokenType BREAK = new const TokenTypeClass("break");
|
|
|
- TokenType CONTINUE = new const TokenTypeClass("continue");
|
|
|
- TokenType RETURN = new const TokenTypeClass("return");
|
|
|
- TokenType TRY = new const TokenTypeClass("try");
|
|
|
- TokenType CATCH = new const TokenTypeClass("catch");
|
|
|
- TokenType END_OF_FILE = new const TokenTypeClass("end_of_file");
|
|
|
+ const TokenTypeClass IF("if");
|
|
|
+ const TokenTypeClass ELSE_IF("else if");
|
|
|
+ const TokenTypeClass ELSE("else");
|
|
|
+ const TokenTypeClass FOR("for");
|
|
|
+ const TokenTypeClass WHILE("while");
|
|
|
+ const TokenTypeClass FUNCTION("function");
|
|
|
+ const TokenTypeClass BREAK("break");
|
|
|
+ const TokenTypeClass CONTINUE("continue");
|
|
|
+ const TokenTypeClass RETURN("return");
|
|
|
+ const TokenTypeClass TRY("try");
|
|
|
+ const TokenTypeClass CATCH("catch");
|
|
|
+ const TokenTypeClass END_OF_FILE("end_of_file");
|
|
|
};
|