/
thomas-king
/
SyntacticAnalyzer
Обзор
Документация
Войти
/
thomas-king
/
SyntacticAnalyzer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
lib/Services/CharacterManager.cpp
66 строк
2 KB
Ace Rodstin
Implement SyntacticAnalyzer.
06 апр 2023, 09:52
06 апр 2023, 09:52
2d58f4b
Код
Авторство
О чём код?
// // CharacterManager.cpp // TokensParser // // Created by Ace Rodstin on 3/6/23. // Copyright © 2023 Ace Rodstin. All rights reserved. // #include "Services/CharacterManager.h" #include <set> #include <cctype> using namespace ace; using namespace std; bool CharacterManager::isDelimiter(char character) { return isWhitespace(character) || isNull(character); } bool CharacterManager::isWhitespace(char character) { set<char> allowed = { ' ', '\t', '\f', '\v', '\r', '\n' }; return allowed.contains(character); } bool CharacterManager::isDigit(char character, NumberBase base) { switch (base) { case NumberBase::decimal: return character >= '0' && character <= '9'; case NumberBase::binary: return character == '0' || character == '1'; case NumberBase::octal: return character >= '0' && character <= '7'; case NumberBase::hexadecimal: { char lowercased = tolower(character); return (lowercased >= '0' && lowercased <= '9') || (lowercased >= 'a' && lowercased <= 'f'); } } } bool CharacterManager::isLetter(char character) { char lowercased = tolower(character); return lowercased >= 'a' && lowercased <= 'z'; } bool CharacterManager::isNull(char character) { return character == '\0'; } bool CharacterManager::isExponent(char character, NumberBase base) { char lowercased = tolower(character); bool isDecimal = base == NumberBase::decimal; char exponent = isDecimal ? 'e' : 'p'; return lowercased == exponent; } bool CharacterManager::isSign(char character) { return character == '+' || character == '-'; }