loom

Форк
0
/
Lexeme.cpp 
53 строки · 1.2 Кб
1
/*
2
MIT License
3

4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5

6
https://bmstu.codes/lsx/simodo
7
*/
8

9
#include "simodo/inout/token/Lexeme.h"
10
#include "simodo/inout/convert/functions.h"
11

12
namespace simodo::inout
13
{
14

15
std::string getLexemeMnemonic(const Lexeme & lex)
16
{
17
    std::string s;
18

19
    switch(lex.type())
20
    {
21
    case LexemeType::Id:
22
        s = "(идентификатор)";
23
        break;
24
    case LexemeType::Empty:
25
        s = "(конец файла)";
26
        break;
27
    case LexemeType::Error:
28
        s = "(ошибка лексики)";
29
        break;
30
    case LexemeType::Number:
31
        s = "(число)";
32
        break;
33
    case LexemeType::Comment:
34
        s = "(комментарий)";
35
        break;
36
    case LexemeType::Compound:
37
        s = inout::toU8(lex.lexeme());
38
        break;
39
    case LexemeType::Annotation:
40
        s = "(строковая константа)";
41
        break;
42
    case LexemeType::Punctuation:
43
        s = "'" + inout::toU8(lex.lexeme()) + "'";
44
        break;
45
    default: // default: нужен на случай расширения перечисления, чтобы видеть ошибку
46
        s = "(***)";
47
        break;
48
    }
49

50
    return s;
51
}
52

53
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.