diff --git a/Token.cpp b/Token.cpp
new file mode 100644
index 0000000..7cb50e0
--- /dev/null
+++ b/Token.cpp
@@ -0,0 +1,65 @@
+#include "Token.h"
+
+Token::Token(const Token &other) {
+    *this = other;
+}
+
+Token::Token(QChar symbol) {
+    _type = SYM;
+    _charVal = symbol;
+}
+
+Token::Token(QString &&identifier) {
+    _type = IDENT;
+    _stringVal = identifier;
+}
+
+Token::Token(QList<Token> &&parenthesized) {
+    _type = PAREN;
+    _listVal = new QList<Token>(parenthesized);
+}
+
+Token::Token(char varType, const QString &&name) {
+    _type = VAR;
+    _charVal = varType;
+    _stringVal = name;
+}
+
+Token::~Token() {
+    // Стерать нулевые пойнтеры безопасно
+    delete _listVal;
+}
+
+bool Token::isSym() {
+    return _type == SYM;
+}
+
+bool Token::isIdent() {
+    return _type == IDENT;
+}
+
+bool Token::isParen() {
+    return _type == PAREN;
+}
+
+bool Token::isVar() {
+    return _type == VAR;
+}
+
+Token::Token() : Token("Null") {
+}
+
+bool Token::operator==(const Token &other) {
+    return _type == other._type
+           && _stringVal == other._stringVal
+           && _charVal == other._charVal
+           && (_listVal == nullptr || *_listVal == (*other._listVal));
+}
+
+QList<Token> Token::parenContent() {
+    if (isParen() && _listVal) {
+        return *_listVal;
+    } else {
+        return {};
+    }
+}
