4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
6
https://bmstu.codes/lsx/simodo
9
/*! \file Утилита тестирования средств работы с JSON библиотеки SIMODO core. Проект SIMODO.
12
#include "simodo/variable/json/Serialization.h"
13
#include "simodo/variable/json/parser/JsonRdp.h"
14
#include "simodo/variable/json/parser/Json5Rdp.h"
15
#include "simodo/variable/json/parser/JsonLspBuilder.h"
16
#include "simodo/inout/reporter/ConsoleReporter.h"
17
#include "simodo/inout/convert/functions.h"
21
using namespace simodo::inout;
22
using namespace simodo::variable;
26
int jsonize (Parser_interface & parser, const std::vector<Token> & const_variable_set, const std::vector<std::pair<Token,Token>> & group_set)
28
bool ok = parser.parse();
31
std::cout << "Константы и переменные:" << std::endl;
32
for(const Token & t : const_variable_set)
33
std::cout << "\t\"" << toU8(t.lexeme()) << "\"\t"
34
<< getLexemeTypeName(t.type())
36
<< t.location().range().start().line() << ", " << t.location().range().start().character()
38
std::cout << "Структура:" << std::endl;
39
for(const auto & [open_brace_token,close_brace_token] : group_set)
40
std::cout << "\t" << toU8(open_brace_token.lexeme()) << " ["
41
<< open_brace_token.location().range().start().line() << ", " << open_brace_token.location().range().start().character()
43
<< close_brace_token.location().range().start().line() << ", " << close_brace_token.location().range().start().character()
44
<< "] " << toU8(close_brace_token.lexeme()) << std::endl;
51
int main(int argc, char *argv[])
53
std::vector<std::string> arguments(argv + 1, argv + argc);
55
std::string file_name = "";
59
for(size_t i=0; i < arguments.size(); ++i)
61
const std::string & arg = arguments[i];
65
if (arg == "--help" || arg == "-h")
70
else if (file_name.empty())
76
if (!help && file_name.empty())
81
std::cout << "Ошибка в параметрах запуска" << std::endl;
86
std::cout << "Утилита тестирования средств работы с JSON. Проект SIMODO." << std::endl
87
<< "Формат запуска:" << std::endl
88
<< " <имя утилиты> [<параметры>] <файл>" << std::endl
89
<< "Параметры:" << std::endl
90
<< " -h | --help - отображение подсказки по запуску программы" << std::endl
96
if (file_name.empty())
99
ConsoleReporter reporter;
100
std::vector<Token> const_variable_set;
101
std::vector<std::pair<Token,Token>> group_set;
102
JsonLspBuilder builder(const_variable_set, group_set);
104
std::unique_ptr<Parser_interface> parser;
106
if (file_name[file_name.size()-1] == '5')
107
parser = std::make_unique<Json5Rdp>(reporter, builder, file_name, value);
109
parser = std::make_unique<JsonRdp>(reporter, builder, file_name, value);
111
return jsonize(*parser, const_variable_set, group_set);