/
thomas-king
/
SyntacticAnalyzer
Обзор
Документация
Войти
/
thomas-king
/
SyntacticAnalyzer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
lib/Models/Literal.cpp
85 строк
2 KB
Ace Rodstin
Update models.
05 апр 2023, 15:04
05 апр 2023, 15:04
d490c58
Код
Авторство
О чём код?
// // Literal.cpp // TokensParser // // Created by Ace Rodstin on 4/4/23. // Copyright © 2023 Ace Rodstin. All rights reserved. // #include "Models/Literal.h" #include <sstream> using namespace ace; Literal::Literal(Kind kind, string value, optional<NumberBase> numberBase) { this->kind = kind; this->value = value; this->numberBase = numberBase; } Literal::Kind Literal::getKind() const { return kind; } string Literal::getValue() const { return value; } NumberBase Literal::getNumberBase() const { return numberBase.value(); } string Literal::toString() const { stringstream stream; stream << "Literal(kind: " << description(kind) << ", value: " << description(value) << ", numberBase: " << description(numberBase) << ")"; return stream.str(); } bool Literal::operator ==(const Literal& other) const { auto lhs = *this; auto rhs = other; return lhs.kind == rhs.kind && lhs.value == rhs.value && lhs.numberBase == rhs.numberBase; } string Literal::description(Kind kind) const { string description; switch (kind) { case Kind::integer: description = "integer"; break; case Kind::_float: description = "float"; break; case Kind::string: description = "string"; break; case Kind::character: description = "character"; break; } return description; }; string Literal::description(string text) const { return "\"" + text + "\""; } string Literal::description(optional<NumberBase> numberBase) const { if (numberBase.has_value()) { return ace::description(numberBase.value()); } else { return "null"; } }