loom
1/*
2MIT License
3
4Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5
6https://bmstu.codes/lsx/simodo
7*/
8
9#include "simodo/inout/token/Lexeme.h"
10#include "simodo/inout/convert/functions.h"
11
12namespace simodo::inout
13{
14
15std::string getLexemeMnemonic(const Lexeme & lex)
16{
17std::string s;
18
19switch(lex.type())
20{
21case LexemeType::Id:
22s = "(идентификатор)";
23break;
24case LexemeType::Empty:
25s = "(конец файла)";
26break;
27case LexemeType::Error:
28s = "(ошибка лексики)";
29break;
30case LexemeType::Number:
31s = "(число)";
32break;
33case LexemeType::Comment:
34s = "(комментарий)";
35break;
36case LexemeType::Compound:
37s = inout::toU8(lex.lexeme());
38break;
39case LexemeType::Annotation:
40s = "(строковая константа)";
41break;
42case LexemeType::Punctuation:
43s = "'" + inout::toU8(lex.lexeme()) + "'";
44break;
45default: // default: нужен на случай расширения перечисления, чтобы видеть ошибку
46s = "(***)";
47break;
48}
49
50return s;
51}
52
53}