MalachScript/src/Parser/Lexer/NumericalLexers.cpp

68 lines
1.6 KiB
C++

#include <cstdint>
#include "NumericalLexers.hpp"
uint8_t LexDecimalValue(char8_t c) {
switch (c) {
case u8'0': return 0;
case u8'1': return 1;
case u8'2': return 2;
case u8'3': return 3;
case u8'4': return 4;
case u8'5': return 5;
case u8'6': return 6;
case u8'7': return 7;
case u8'8': return 8;
case u8'9': return 9;
default: return 255;
}
}
uint8_t LexHexadecimalValue(char8_t c) {
switch (c) {
case u8'0': return 0;
case u8'1': return 1;
case u8'2': return 2;
case u8'3': return 3;
case u8'4': return 4;
case u8'5': return 5;
case u8'6': return 6;
case u8'7': return 7;
case u8'8': return 8;
case u8'9': return 9;
case u8'a':
case u8'A': return 10;
case u8'b':
case u8'B': return 11;
case u8'c':
case u8'C': return 12;
case u8'd':
case u8'D': return 13;
case u8'e':
case u8'E': return 14;
case u8'f':
case u8'F': return 15;
default: return 255;
}
}
uint8_t LexOctalValue(char8_t c) {
switch (c) {
case u8'0': return 0;
case u8'1': return 1;
case u8'2': return 2;
case u8'3': return 3;
case u8'4': return 4;
case u8'5': return 5;
case u8'6': return 6;
case u8'7': return 7;
default: return 255;
}
}
uint8_t LexBinaryValue(char8_t c) {
switch (c) {
case u8'0': return 0;
case u8'1': return 1;
default: return 255;
}
}