Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@
- [`CSV Parsing`](modules/Language/CSV/Parsing.mpp) - Stream-based CSV line parser
- [`CLikeCompiler`](modules/Language/CLikeCompiler.mpp) - Compiler for C-inspired language
- [`GrammarParser`](modules/Language/GrammarParser.mpp) - A parser for defining and interpreting custom grammars, used for building language parsers
- [`JSON Lexer`](modules/Language/JSON/JsonLexer.mpp) - Grammar-based JSON lexer with compile-time AST generation
- [`JSON Mapping`](modules/Language/JSON/Mapping.mpp) - Type-safe bidirectional mapping between C++ structs and JSON with compile-time reflection
- [`JSON Parsing`](modules/Language/JSON/Parsing.mpp) - High-performance typed JSON parser
- [`MetaCircularVirtualMachine`](modules/Language/MetaCircularVirtualMachine.mpp) - Homoiconic meta-circular virtual machine with extensible reflexivity
- [`MetaCircularParser`](modules/Language/MetaCircularParser.mpp) - Extension of `MetaCircularVirtualMachine` for building parsers with input stream reading capabilities
- [`ASTParser`](modules/Language/ASTParser.mpp) - AST parser (work in progress <img src="resources/loading.gif" width="12" height="12"/>)
Expand Down
10 changes: 5 additions & 5 deletions modules/Language/JSON/JsonLexer.mpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
export module CppUtils.Language.Json;
export module CppUtils.Language.JSON.JsonLexer;

import std;
import CppUtils.Type;
import CppUtils.String;
import CppUtils.Container.Tree;
import CppUtils.Language.Lexer;

export namespace CppUtils::Language::Json
export namespace CppUtils::Language::JSON
{
class JsonLexer final
{
Expand Down Expand Up @@ -51,17 +51,17 @@ export namespace CppUtils::Language::Json
Lexer::GrammarLexer<Type::Token, bool, float> m_grammarLexer;
};

[[nodiscard]] inline auto parse(std::string_view src) -> Container::Tree::VariantNode<Type::Token, bool, float>
[[nodiscard]] inline auto parseTree(std::string_view src) -> Container::Tree::VariantNode<Type::Token, bool, float>
{
static const auto jsonLexer = JsonLexer{};
return jsonLexer.parse(src);
}

namespace Literals
{
[[nodiscard]] inline auto operator""_json(const char* cstring, std::size_t) -> Container::Tree::VariantNode<Type::Token, bool, float>
[[nodiscard]] inline auto operator""_json_tree(const char* cstring, std::size_t) -> Container::Tree::VariantNode<Type::Token, bool, float>
{
return parse(cstring);
return parseTree(cstring);
}
}
}
2 changes: 1 addition & 1 deletion modules/Language/Language.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export import CppUtils.Language.MetaCircularVirtualMachine;
export import CppUtils.Language.MetaCircularParser;
export import CppUtils.Language.CSV.Mapping;
export import CppUtils.Language.CSV.Parsing;
export import CppUtils.Language.JSON.JsonLexer;
export import CppUtils.Language.JSON.Mapping;
export import CppUtils.Language.JSON.Parsing;
export import CppUtils.Language.Lexer;
Expand All @@ -17,7 +18,6 @@ export import CppUtils.Language.Xml.Tags;
export import CppUtils.Language.Xml.Flow;
export import CppUtils.Language.Xml.FlowRunner;
export import CppUtils.Language.Ini;
export import CppUtils.Language.Json;
export import CppUtils.Language.Parameters;
export import CppUtils.Language.Markdown;
export import CppUtils.Language.Parser.AstParser;
12 changes: 6 additions & 6 deletions tests/Language/INI/IniLexer.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ namespace CppUtils::UnitTest::Language::Ini::IniLexer
{
using namespace CppUtils::String::Literals;

auto _ = TestSuite{"Language/Ini/IniLexer", {"Language/Json/JsonLexer"}, [](TestSuite& suite) {
auto _ = TestSuite{"Language/Ini/IniLexer", {"Language/JSON/JsonLexer"}, [](TestSuite& suite) {
using namespace std::literals;
using namespace CppUtils::Language::Ini::Literals;
using namespace CppUtils::Language::Json::Literals;
using namespace CppUtils::Language::JSON::Literals;

suite.addTest("Minimalist", [&] {
const auto iniTree = R"(
Expand All @@ -27,7 +27,7 @@ namespace CppUtils::UnitTest::Language::Ini::IniLexer
}
}
}
)"_json;
)"_json_tree;

suite.expectEqual(iniTree, jsonTree);
});
Expand All @@ -47,7 +47,7 @@ namespace CppUtils::UnitTest::Language::Ini::IniLexer
}
}
}
)"_json;
)"_json_tree;

suite.expectEqual(iniTree, jsonTree);
});
Expand All @@ -69,7 +69,7 @@ namespace CppUtils::UnitTest::Language::Ini::IniLexer
}
}
}
)"_json;
)"_json_tree;

suite.expectEqual(iniTree, jsonTree);
});
Expand Down Expand Up @@ -108,7 +108,7 @@ namespace CppUtils::UnitTest::Language::Ini::IniLexer
}
}
}
)"_json;
)"_json_tree;

suite.expectEqual(std::ranges::size(iniTree.nodes), 3uz);
suite.expectEqual(iniTree.nodes.at(0), jsonTree.nodes.at(0));
Expand Down
22 changes: 11 additions & 11 deletions tests/Language/JSON/JsonLexer.mpp
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
export module CppUtils.UnitTests.Language.Json.JsonLexer;
export module CppUtils.UnitTests.Language.JSON.JsonLexer;

import std;
import CppUtils;

namespace CppUtils::UnitTest::Language::Json::JsonLexer
namespace CppUtils::UnitTest::Language::JSON::JsonLexer
{
using namespace CppUtils::String::Literals;

auto _ = TestSuite{"Language/Json/JsonLexer", {}, [](TestSuite& suite) {
auto _ = TestSuite{"Language/JSON/JsonLexer", {}, [](TestSuite& suite) {
using namespace std::literals;
using namespace CppUtils::Language::Json::Literals;
using namespace CppUtils::Language::JSON::Literals;

suite.addTest("Empty json", [&] {
const auto jsonTree = R"(
{}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expect(std::ranges::empty(jsonTree.nodes));
Expand All @@ -25,7 +25,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
{
"key": null
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 1uz);
Expand All @@ -40,7 +40,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
"bool0": true,
"bool1": false
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 2uz);
Expand All @@ -61,7 +61,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
"number1": -21,
"number2": 3.141592
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 3uz);
Expand All @@ -84,7 +84,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
{
"key": "hello"
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 1uz);
Expand All @@ -99,7 +99,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
{
"key": [1, "abc", true]
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 1uz);
Expand All @@ -124,7 +124,7 @@ namespace CppUtils::UnitTest::Language::Json::JsonLexer
"number1": 1
}
}
)"_json;
)"_json_tree;
CppUtils::Log::TreeNodeLogger::log(jsonTree);

suite.expectEqual(std::ranges::size(jsonTree.nodes), 1uz);
Expand Down
2 changes: 1 addition & 1 deletion tests/Language/JSON/Mapping.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ namespace CppUtils::UnitTest::Language::JSON::Mapping
using FunctionMapping = Type::Mapping<>;
};

auto _ = TestSuite{"Language/JSON/Mapping", {"Logger", "Language/Json/JsonLexer", "Language/JSON/Parsing"}, [](TestSuite& suite) {
auto _ = TestSuite{"Language/JSON/Mapping", {"Logger", "Language/JSON/JsonLexer", "Language/JSON/Parsing"}, [](TestSuite& suite) {
using namespace CppUtils::Language::JSON::Literals;
using Logger = TestSuite::Logger;

Expand Down
2 changes: 1 addition & 1 deletion tests/Language/JSON/Parsing.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import CppUtils;

namespace CppUtils::UnitTest::Language::JSON::Parsing
{
auto _ = TestSuite{"Language/JSON/Parsing", {"Language/Json/JsonLexer"}, [](TestSuite& suite) {
auto _ = TestSuite{"Language/JSON/Parsing", {"Language/JSON/JsonLexer"}, [](TestSuite& suite) {
using namespace std::literals;
using namespace CppUtils::Language::JSON::Literals;

Expand Down
2 changes: 1 addition & 1 deletion tests/UnitTests.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export import CppUtils.UnitTests.Language.LabelsCompiler;
export import CppUtils.UnitTests.Language.MetaCircularVirtualMachine;
export import CppUtils.UnitTests.Language.MetaCircularParser;
export import CppUtils.UnitTests.Language.Ini.IniLexer;
export import CppUtils.UnitTests.Language.Json.JsonLexer;
export import CppUtils.UnitTests.Language.JSON.JsonLexer;
export import CppUtils.UnitTests.Language.Parameters.ParametersLexer;
export import CppUtils.UnitTests.Language.Lexer.Grammar.LowLevelGrammar;
export import CppUtils.UnitTests.Language.Lexer.Grammar.HighLevelGrammar;
Expand Down
Loading