From 63b05603755faee62c11f46f68cc117fa7c7471b Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Thu, 8 Feb 2024 19:16:56 +0300 Subject: [PATCH] fix compile errors --- {Language => .back}/old/Acceptors.hpp | 0 {Language => .back}/old/Parser/CMakeLists.txt | 0 .../old/Parser/applications/Cfg.cpp | 0 {Language => .back}/old/Parser/private/CLR.cpp | 0 .../old/Parser/private/CfGrammar.cpp | 0 .../old/Parser/private/CfGrammarParser.cpp | 0 .../old/Parser/private/Parser.cpp | 0 {Language => .back}/old/Parser/public/CLR.hpp | 0 .../old/Parser/public/CfGrammar.hpp | 0 .../old/Parser/public/Parser.hpp | 0 {Language => .back}/old/Parser/rsc/grammar.txt | 0 .../old/Parser/tests/CLRTests.cpp | 0 .../old/Parser/tests/GrammarTests.cpp | 0 {Language => .back}/old/Parser/tests/Tests.cpp | 0 .../old/Tokenizer/CMakeLists.txt | 0 .../old/Tokenizer/private/Tokenizer.cpp | 0 .../old/Tokenizer/public/AutomataGraph.h | 0 .../old/Tokenizer/public/RegularExpression.h | 0 .../old/Tokenizer/public/Tokenizer.hpp | 0 .../old/Tokenizer/tests/TestTokenizer.cpp | 0 .../old/Tokenizer/tests/tests.cpp | 0 Language/public/ContextFreeAutomata.hpp | 8 ++++---- Language/public/ContextFreeCompiler.hpp | 18 +++++++++++------- Language/public/Grammar.hpp | 1 - Language/public/Parser.hpp | 10 +--------- Modules/private/Common.cpp | 2 ++ Modules/public/Common.hpp | 1 + 27 files changed, 19 insertions(+), 21 deletions(-) rename {Language => .back}/old/Acceptors.hpp (100%) rename {Language => .back}/old/Parser/CMakeLists.txt (100%) rename {Language => .back}/old/Parser/applications/Cfg.cpp (100%) rename {Language => .back}/old/Parser/private/CLR.cpp (100%) rename {Language => .back}/old/Parser/private/CfGrammar.cpp (100%) rename {Language => .back}/old/Parser/private/CfGrammarParser.cpp (100%) rename {Language => .back}/old/Parser/private/Parser.cpp (100%) rename {Language => .back}/old/Parser/public/CLR.hpp (100%) rename {Language => .back}/old/Parser/public/CfGrammar.hpp (100%) rename {Language => .back}/old/Parser/public/Parser.hpp (100%) rename {Language => .back}/old/Parser/rsc/grammar.txt (100%) rename {Language => .back}/old/Parser/tests/CLRTests.cpp (100%) rename {Language => .back}/old/Parser/tests/GrammarTests.cpp (100%) rename {Language => .back}/old/Parser/tests/Tests.cpp (100%) rename {Language => .back}/old/Tokenizer/CMakeLists.txt (100%) rename {Language => .back}/old/Tokenizer/private/Tokenizer.cpp (100%) rename {Language => .back}/old/Tokenizer/public/AutomataGraph.h (100%) rename {Language => .back}/old/Tokenizer/public/RegularExpression.h (100%) rename {Language => .back}/old/Tokenizer/public/Tokenizer.hpp (100%) rename {Language => .back}/old/Tokenizer/tests/TestTokenizer.cpp (100%) rename {Language => .back}/old/Tokenizer/tests/tests.cpp (100%) diff --git a/Language/old/Acceptors.hpp b/.back/old/Acceptors.hpp similarity index 100% rename from Language/old/Acceptors.hpp rename to .back/old/Acceptors.hpp diff --git a/Language/old/Parser/CMakeLists.txt b/.back/old/Parser/CMakeLists.txt similarity index 100% rename from Language/old/Parser/CMakeLists.txt rename to .back/old/Parser/CMakeLists.txt diff --git a/Language/old/Parser/applications/Cfg.cpp b/.back/old/Parser/applications/Cfg.cpp similarity index 100% rename from Language/old/Parser/applications/Cfg.cpp rename to .back/old/Parser/applications/Cfg.cpp diff --git a/Language/old/Parser/private/CLR.cpp b/.back/old/Parser/private/CLR.cpp similarity index 100% rename from Language/old/Parser/private/CLR.cpp rename to .back/old/Parser/private/CLR.cpp diff --git a/Language/old/Parser/private/CfGrammar.cpp b/.back/old/Parser/private/CfGrammar.cpp similarity index 100% rename from Language/old/Parser/private/CfGrammar.cpp rename to .back/old/Parser/private/CfGrammar.cpp diff --git a/Language/old/Parser/private/CfGrammarParser.cpp b/.back/old/Parser/private/CfGrammarParser.cpp similarity index 100% rename from Language/old/Parser/private/CfGrammarParser.cpp rename to .back/old/Parser/private/CfGrammarParser.cpp diff --git a/Language/old/Parser/private/Parser.cpp b/.back/old/Parser/private/Parser.cpp similarity index 100% rename from Language/old/Parser/private/Parser.cpp rename to .back/old/Parser/private/Parser.cpp diff --git a/Language/old/Parser/public/CLR.hpp b/.back/old/Parser/public/CLR.hpp similarity index 100% rename from Language/old/Parser/public/CLR.hpp rename to .back/old/Parser/public/CLR.hpp diff --git a/Language/old/Parser/public/CfGrammar.hpp b/.back/old/Parser/public/CfGrammar.hpp similarity index 100% rename from Language/old/Parser/public/CfGrammar.hpp rename to .back/old/Parser/public/CfGrammar.hpp diff --git a/Language/old/Parser/public/Parser.hpp b/.back/old/Parser/public/Parser.hpp similarity index 100% rename from Language/old/Parser/public/Parser.hpp rename to .back/old/Parser/public/Parser.hpp diff --git a/Language/old/Parser/rsc/grammar.txt b/.back/old/Parser/rsc/grammar.txt similarity index 100% rename from Language/old/Parser/rsc/grammar.txt rename to .back/old/Parser/rsc/grammar.txt diff --git a/Language/old/Parser/tests/CLRTests.cpp b/.back/old/Parser/tests/CLRTests.cpp similarity index 100% rename from Language/old/Parser/tests/CLRTests.cpp rename to .back/old/Parser/tests/CLRTests.cpp diff --git a/Language/old/Parser/tests/GrammarTests.cpp b/.back/old/Parser/tests/GrammarTests.cpp similarity index 100% rename from Language/old/Parser/tests/GrammarTests.cpp rename to .back/old/Parser/tests/GrammarTests.cpp diff --git a/Language/old/Parser/tests/Tests.cpp b/.back/old/Parser/tests/Tests.cpp similarity index 100% rename from Language/old/Parser/tests/Tests.cpp rename to .back/old/Parser/tests/Tests.cpp diff --git a/Language/old/Tokenizer/CMakeLists.txt b/.back/old/Tokenizer/CMakeLists.txt similarity index 100% rename from Language/old/Tokenizer/CMakeLists.txt rename to .back/old/Tokenizer/CMakeLists.txt diff --git a/Language/old/Tokenizer/private/Tokenizer.cpp b/.back/old/Tokenizer/private/Tokenizer.cpp similarity index 100% rename from Language/old/Tokenizer/private/Tokenizer.cpp rename to .back/old/Tokenizer/private/Tokenizer.cpp diff --git a/Language/old/Tokenizer/public/AutomataGraph.h b/.back/old/Tokenizer/public/AutomataGraph.h similarity index 100% rename from Language/old/Tokenizer/public/AutomataGraph.h rename to .back/old/Tokenizer/public/AutomataGraph.h diff --git a/Language/old/Tokenizer/public/RegularExpression.h b/.back/old/Tokenizer/public/RegularExpression.h similarity index 100% rename from Language/old/Tokenizer/public/RegularExpression.h rename to .back/old/Tokenizer/public/RegularExpression.h diff --git a/Language/old/Tokenizer/public/Tokenizer.hpp b/.back/old/Tokenizer/public/Tokenizer.hpp similarity index 100% rename from Language/old/Tokenizer/public/Tokenizer.hpp rename to .back/old/Tokenizer/public/Tokenizer.hpp diff --git a/Language/old/Tokenizer/tests/TestTokenizer.cpp b/.back/old/Tokenizer/tests/TestTokenizer.cpp similarity index 100% rename from Language/old/Tokenizer/tests/TestTokenizer.cpp rename to .back/old/Tokenizer/tests/TestTokenizer.cpp diff --git a/Language/old/Tokenizer/tests/tests.cpp b/.back/old/Tokenizer/tests/tests.cpp similarity index 100% rename from Language/old/Tokenizer/tests/tests.cpp rename to .back/old/Tokenizer/tests/tests.cpp diff --git a/Language/public/ContextFreeAutomata.hpp b/Language/public/ContextFreeAutomata.hpp index d4bd6e7..1295141 100644 --- a/Language/public/ContextFreeAutomata.hpp +++ b/Language/public/ContextFreeAutomata.hpp @@ -96,20 +96,20 @@ namespace tp { Map states; ualni stateIndex = 0; for (auto state : *automata.getStates()) { - states.put(state.data(), { stateIndex }); + states.put(&state.data(), { stateIndex }); stateIndex++; } stateIndex = 0; for (auto state : *automata.getStates()) { - if (state.data() == automata.getStartState()) { + if (&state.data() == automata.getStartState()) { mStartState = stateIndex; } if (state->isAccepting()) { - ASSERT(state->getTransitions().size() == 0) + ASSERT(state->getTransitions()->size() == 0) for (auto symbolIndex : Range(numSymbols)) { - mTable.set({ stateIndex, symbolIndex }, { Action::REDUCE, state->getStateVal() }); + mTable.set({ stateIndex, symbolIndex }, { Action::REDUCE, state->getStateVal().numArgs() }); } } else { for (auto transition : *state->getTransitions()) { diff --git a/Language/public/ContextFreeCompiler.hpp b/Language/public/ContextFreeCompiler.hpp index 2ffcf5f..2e56f53 100644 --- a/Language/public/ContextFreeCompiler.hpp +++ b/Language/public/ContextFreeCompiler.hpp @@ -7,17 +7,19 @@ namespace tp { class ContextFreeCompiler { - + public: typedef ualni SymbolID; - struct Symbol { - String mId; - bool mIsTerminal = false; - }; - struct Item { const ContextFreeGrammar::Rule* mRule = nullptr; ualni mAdvanceIdx = 0; + ualni numArgs() const { return 0; } + }; + + private: + struct Symbol { + String mId; + bool mIsTerminal = false; }; struct NonTerminal { @@ -90,7 +92,7 @@ namespace tp { for (auto nonTerminal : mNonTerminals) { if (!nonTerminal->val.isProductive()) { - printf("Non-terminal '%s' is not productive\n", nonTerminal->val.rules.first()->data->id.read()); + printf("Non-terminal '%s' is not productive\n", nonTerminal->val.rules.first()->getId().read()); return false; } } @@ -102,6 +104,8 @@ namespace tp { } initSymbols(grammar); + + return true; } void findNonTerminals(const ContextFreeGrammar& grammar) { diff --git a/Language/public/Grammar.hpp b/Language/public/Grammar.hpp index d5dfc5f..df1fba5 100644 --- a/Language/public/Grammar.hpp +++ b/Language/public/Grammar.hpp @@ -53,7 +53,6 @@ namespace tp { void addRule(const String& id, const InitialierList& args); void setStart(const String& startRule); [[nodiscard]] const Buffer* getRules() const { return &mRules; } - [[nodiscard]] bool isValid() const { return false; } [[nodiscard]] const String& getStartTerminal() const { return mStartTerminal; } public: diff --git a/Language/public/Parser.hpp b/Language/public/Parser.hpp index 1c380e2..15855d7 100644 --- a/Language/public/Parser.hpp +++ b/Language/public/Parser.hpp @@ -17,7 +17,7 @@ namespace tp { typedef RegularGrammar RegularGrammar; typedef RegularCompiler RegularCompiler; typedef FiniteStateAutomation RegularGraph; - typedef RegularAutomata RegularAutomata; + typedef RegularAutomata RegularAutomata; // ContextFreeGrammar; // ContextFreeCompiler; @@ -31,10 +31,6 @@ namespace tp { bool compileTables(const ContextFreeGrammar& cfGrammar, const RegularGrammar& reGrammar) { // Compile Regular Grammar { - if (!reGrammar.isValid()) { - return false; - } - RegularGraph graph; RegularCompiler compiler; compiler.compile(graph, reGrammar); @@ -44,10 +40,6 @@ namespace tp { // compile context free grammar { - if (!cfGrammar.isValid()) { - return false; - } - ContextFreeGraph graph; ContextFreeCompiler compiler; compiler.compile(cfGrammar, graph); diff --git a/Modules/private/Common.cpp b/Modules/private/Common.cpp index 6b0b5c7..24e82a8 100644 --- a/Modules/private/Common.cpp +++ b/Modules/private/Common.cpp @@ -29,6 +29,8 @@ namespace tp { return v + 1; } + ualni hash(const void* bytes) { return hash((const char*) bytes); } + ualni hash(const char* bytes) { unsigned long hash = 5381; int c; diff --git a/Modules/public/Common.hpp b/Modules/public/Common.hpp index 71de466..6697780 100644 --- a/Modules/public/Common.hpp +++ b/Modules/public/Common.hpp @@ -42,6 +42,7 @@ namespace tp { uhalni next2pow(uhalni v); ufalni next2pow(ufalni v); + ualni hash(const void* bytes); ualni hash(const char* bytes); ualni hash(alni bytes); ualni hash(halni bytes);