diff --git a/build/.ninja_deps b/build/.ninja_deps index d94e647..d852121 100644 Binary files a/build/.ninja_deps and b/build/.ninja_deps differ diff --git a/build/.ninja_log b/build/.ninja_log index 3ec7152..3d326c6 100644 --- a/build/.ninja_log +++ b/build/.ninja_log @@ -21,3 +21,35 @@ 1 3534 1781792355631085471 CMakeFiles/saqut.dir/src/semantic/type_checker.cpp.o 15f44776b9c3e26d 1 5538 1781792355629691194 CMakeFiles/saqut.dir/src/main.cpp.o 110c26cb1d0c3a23 5538 5861 1781792361166696724 saqut 77cf84e33c34ab02 +1 4565 1781794501587748975 CMakeFiles/saqut.dir/src/lexer/lexer.cpp.o 90eeec811f2137e6 +6 5765 1781794501593748981 CMakeFiles/saqut.dir/src/parser/parser.cpp.o 2c65b7be26cead32 +2 6786 1781794501590384636 CMakeFiles/saqut.dir/src/parser/nodes/statements.cpp.o b5c20724bbf3648c +2 6934 1781794501589760926 CMakeFiles/saqut.dir/src/parser/nodes/binary_expr.cpp.o d2e2bb2f8a63c6d2 +2 7059 1781794501590181179 CMakeFiles/saqut.dir/src/parser/nodes/literal.cpp.o 78f2c4da7c9b2281 +2 7150 1781794501590288617 CMakeFiles/saqut.dir/src/parser/nodes/program.cpp.o ac5bbcd74d87561a +2 7264 1781794501589877089 CMakeFiles/saqut.dir/src/parser/nodes/declarations.cpp.o b6c56f04a257f685 +2 7510 1781794501590069464 CMakeFiles/saqut.dir/src/parser/nodes/identifier.cpp.o eb96bb4b1eb4ad80 +2 7889 1781794501589962656 CMakeFiles/saqut.dir/src/parser/nodes/expressions.cpp.o 4057e3d63c63a1ab +2 9281 1781794501588748976 CMakeFiles/saqut.dir/src/main.cpp.o 110c26cb1d0c3a23 +4565 9347 1781794506151753299 CMakeFiles/saqut.dir/src/semantic/structural_validator.cpp.o 4bfec8abc0e9893e +6934 9664 1781794508520755543 CMakeFiles/saqut.dir/src/tokenizer/tokenizer.cpp.o a01677f8bb4f4dbc +5765 9917 1781794507351754435 CMakeFiles/saqut.dir/src/semantic/type_checker.cpp.o 15f44776b9c3e26d +6786 10724 1781794508372755403 CMakeFiles/saqut.dir/src/symbol/symbol_collector.cpp.o 3348f498f369213d +10724 10943 1781794512310759133 saqut 77cf84e33c34ab02 +1 5577 1781794548935793844 CMakeFiles/saqut.dir/src/lexer/lexer.cpp.o 90eeec811f2137e6 +6 7118 1781794548940793848 CMakeFiles/saqut.dir/src/parser/parser.cpp.o 2c65b7be26cead32 +1 7401 1781794548937164958 CMakeFiles/saqut.dir/src/parser/nodes/expressions.cpp.o 4057e3d63c63a1ab +1 7781 1781794548937485082 CMakeFiles/saqut.dir/src/parser/nodes/program.cpp.o ac5bbcd74d87561a +5 7795 1781794548939793847 CMakeFiles/saqut.dir/src/parser/nodes/statements.cpp.o b5c20724bbf3648c +1 7846 1781794548937277813 CMakeFiles/saqut.dir/src/parser/nodes/identifier.cpp.o eb96bb4b1eb4ad80 +1 8355 1781794548937386639 CMakeFiles/saqut.dir/src/parser/nodes/literal.cpp.o 78f2c4da7c9b2281 +1 8623 1781794548937059964 CMakeFiles/saqut.dir/src/parser/nodes/declarations.cpp.o b6c56f04a257f685 +1 8702 1781794548936968496 CMakeFiles/saqut.dir/src/parser/nodes/binary_expr.cpp.o d2e2bb2f8a63c6d2 +1 9568 1781794548936880430 CMakeFiles/saqut.dir/src/main.cpp.o 110c26cb1d0c3a23 +7781 10439 1781794556715801213 CMakeFiles/saqut.dir/src/tokenizer/tokenizer.cpp.o a01677f8bb4f4dbc +5577 10556 1781794554511799126 CMakeFiles/saqut.dir/src/semantic/structural_validator.cpp.o 4bfec8abc0e9893e +7118 11087 1781794556053800586 CMakeFiles/saqut.dir/src/semantic/type_checker.cpp.o 15f44776b9c3e26d +7401 11835 1781794556335800853 CMakeFiles/saqut.dir/src/symbol/symbol_collector.cpp.o 3348f498f369213d +11836 12067 1781794560770805055 saqut 77cf84e33c34ab02 +2 1784 1781794795003026937 CMakeFiles/saqut.dir/src/tokenizer/tokenizer.cpp.o a01677f8bb4f4dbc +1784 2001 1781794796785028624 saqut 77cf84e33c34ab02 diff --git a/src/lexer/lexer.cpp b/src/lexer/lexer.cpp index e00bbee..79b35d7 100644 --- a/src/lexer/lexer.cpp +++ b/src/lexer/lexer.cpp @@ -79,7 +79,7 @@ std::string Lexer::getPositionRange() { // -------------------------------------------------------------------------- // include: Belirtilen kelime mevcut konumda başlıyor mu? // -------------------------------------------------------------------------- -bool Lexer::include(std::string word, bool accept) { +bool Lexer::include(std::string_view word, bool accept) { beginPosition(); for (size_t i = 0; i < word.size(); i++) { if (isEnd()) { diff --git a/src/lexer/lexer.hpp b/src/lexer/lexer.hpp index 3a45220..3702a3b 100644 --- a/src/lexer/lexer.hpp +++ b/src/lexer/lexer.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include "core/location.hpp" #include "core/sourcefile.hpp" @@ -67,7 +68,7 @@ public: std::string getPositionRange(); // Pozisyon aralığındaki metni döndür // --- Desen Eşleme --- - bool include(std::string word, bool accept = true); + bool include(std::string_view word, bool accept = true); // --- Konum Okuma/Yazma --- int getOffset(); // Mevcut offset'i döndür diff --git a/src/tokenizer/tokenizer.cpp b/src/tokenizer/tokenizer.cpp index 1c97ec2..1e0f1f7 100644 --- a/src/tokenizer/tokenizer.cpp +++ b/src/tokenizer/tokenizer.cpp @@ -41,7 +41,7 @@ Token* Tokenizer::scope() { } for (const auto& kw : keywords) { - if (hmx.include(std::string(kw), false)) { + if (hmx.include(kw, false)) { char next = hmx.getchar(static_cast(kw.size())); if ((next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z') || (next >= '0' && next <= '9') || next == '_' || next == '$') { @@ -58,7 +58,7 @@ Token* Tokenizer::scope() { } for (const auto& del : delimiters) { - if (hmx.include(std::string(del), false)) { + if (hmx.include(del, false)) { DelimiterToken* dt = new DelimiterToken(); dt->start = hmx.getOffset(); dt->loc = hmx.getLocation(); @@ -70,7 +70,7 @@ Token* Tokenizer::scope() { } for (const auto& op : operators) { - if (hmx.include(std::string(op), false)) { + if (hmx.include(op, false)) { OperatorToken* ot = new OperatorToken(); ot->start = hmx.getOffset(); ot->loc = hmx.getLocation();