68 lines
1.6 KiB
C++
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;
|
||
|
}
|
||
|
}
|