From 47368b374f7751d874323e447b7d1a27088308b5 Mon Sep 17 00:00:00 2001 From: SkrinVex Date: Thu, 25 Dec 2025 16:59:15 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D0=BB=D0=BE=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8,=20=D1=86=D0=B8=D0=BA=D0=BB=D1=8B,=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=B8=D0=B2=D1=8B=20=D0=B8=20=D0=B1=D0=B8=D0=B1?= =?UTF-8?q?=D0=BB=D1=82=D0=BE=D1=82=D0=B5=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxlang | Bin 0 -> 439560 bytes script.fox | 4 +- src/AST.h | 307 ++++++++++++++++++++++++++++++--------------- src/Lexer.cpp | 38 ++++-- src/Parser.cpp | 202 +++++++++++++++++++++++------ src/Parser.h | 21 ++-- src/Token.h | 14 ++- src/foxlang | Bin 280536 -> 0 bytes src/main.cpp | 15 ++- test.fox | 30 ++++- test/lib_utils.fox | 38 ++++++ test/main_app.fox | 102 +++++++++++++++ 12 files changed, 599 insertions(+), 172 deletions(-) create mode 100755 foxlang delete mode 100755 src/foxlang create mode 100644 test/lib_utils.fox create mode 100644 test/main_app.fox diff --git a/foxlang b/foxlang new file mode 100755 index 0000000000000000000000000000000000000000..fb53c705b180fbcdb6e71e5ea9c28ca8b66eb7a0 GIT binary patch literal 439560 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 #include #include +#include +#include -// Предварительное объявление +// Forward declaration struct Node; -// --- ПАМЯТЬ ЯЗЫКА --- +// --- ПАМЯТЬ --- struct Context { - // Переменные: Имя -> Значение std::map variables; - // Типы переменных: Имя -> Тип ("int", "string") - std::map varTypes; - // Функции: Имя -> Узел тела функции (BlockNode) std::map> functions; + // МАССИВЫ: Имя -> Вектор значений + std::map> arrays; bool exists(const std::string& name) { - return variables.find(name) != variables.end(); + return variables.count(name) || arrays.count(name); } }; @@ -31,162 +31,253 @@ static std::string formatNumber(double val) { return s; } -// --- УЗЛЫ --- struct Node { virtual ~Node() = default; virtual std::string eval(Context& ctx) = 0; }; -// 1. Базовые значения +// --- БАЗОВЫЕ НОДЫ (Без изменений) --- struct NumberNode : Node { std::string val; NumberNode(std::string v) : val(v) {} std::string eval(Context& ctx) override { return val; } }; - struct StringNode : Node { std::string val; StringNode(std::string v) : val(v) {} std::string eval(Context& ctx) override { return val; } }; - -// 2. Доступ к переменной (x) struct VarAccessNode : Node { std::string name; VarAccessNode(std::string n) : name(n) {} std::string eval(Context& ctx) override { - if (!ctx.exists(name)) { - std::cerr << "Runtime Error: Variable '" << name << "' is not defined." << std::endl; - exit(1); + if (ctx.variables.find(name) == ctx.variables.end()) { + // Проверка, может это массив? + if(ctx.arrays.count(name)) return "ARRAY:" + name; + std::cerr << "Runtime Error: Var '" << name << "' not found." << std::endl; exit(1); } return ctx.variables[name]; } }; -// 3. Объявление переменной (int x = 5;) -struct VarDeclNode : Node { - std::string type; - std::string name; - std::unique_ptr expr; - VarDeclNode(std::string t, std::string n, std::unique_ptr e) - : type(t), name(n), expr(std::move(e)) {} - - std::string eval(Context& ctx) override { - if (ctx.exists(name)) { - std::cerr << "Error: Variable '" << name << "' already exists." << std::endl; - exit(1); - } - std::string val = expr->eval(ctx); - // Простая проверка типа (можно усложнить) - if (type == "int") { - try { std::stod(val); } catch(...) { - std::cerr << "Type Error: Cannot assign string to int '" << name << "'" << std::endl; exit(1); - } - } - ctx.variables[name] = val; - ctx.varTypes[name] = type; - return val; - } -}; +// --- ЛОГИКА И УПРАВЛЕНИЕ --- -// 4. Присваивание (x = 10;) -struct AssignNode : Node { - std::string name; - std::unique_ptr expr; - AssignNode(std::string n, std::unique_ptr e) : name(n), expr(std::move(e)) {} - - std::string eval(Context& ctx) override { - if (!ctx.exists(name)) { - std::cerr << "Error: Variable '" << name << "' not declared." << std::endl; - exit(1); - } - std::string val = expr->eval(ctx); - ctx.variables[name] = val; // Тут можно добавить проверку типа снова - return val; - } -}; - -// 5. Математика -struct BinOpNode : Node { - char op; +// Сравнение: ==, !=, <, > +// Сравнение: ==, !=, <, > +struct CompareNode : Node { + std::string op; std::unique_ptr left, right; - BinOpNode(char o, std::unique_ptr l, std::unique_ptr r) + CompareNode(std::string o, std::unique_ptr l, std::unique_ptr r) : op(o), left(std::move(l)), right(std::move(r)) {} std::string eval(Context& ctx) override { std::string lStr = left->eval(ctx); std::string rStr = right->eval(ctx); - - // Если это строки и операция +, конкатенируем - bool isStr = (lStr.find_first_not_of("0123456789.-") != std::string::npos) || - (rStr.find_first_not_of("0123456789.-") != std::string::npos); - - if (op == '+' && isStr) return lStr + rStr; + // Проверяем, являются ли значения числами + bool lIsNum = (lStr.find_first_not_of("0123456789.-") == std::string::npos); + bool rIsNum = (rStr.find_first_not_of("0123456789.-") == std::string::npos); + + // Если хотя бы одно значение - текст, сравниваем как СТРОКИ + if (!lIsNum || !rIsNum) { + if (op == "==") return (lStr == rStr) ? "1" : "0"; + if (op == "!=") return (lStr != rStr) ? "1" : "0"; + // Для строк операции > и < работают лексикографически (по алфавиту) + if (op == "<") return (lStr < rStr) ? "1" : "0"; + if (op == ">") return (lStr > rStr) ? "1" : "0"; + return "0"; + } + + // Если оба числа - переводим в double и сравниваем математически double l = std::stod(lStr); double r = std::stod(rStr); - if (op == '+') return formatNumber(l + r); - if (op == '-') return formatNumber(l - r); - if (op == '*') return formatNumber(l * r); - if (op == '/') return formatNumber((r!=0)? l/r : 0); + + if (op == "==") return (std::abs(l - r) < 0.00001) ? "1" : "0"; + if (op == "!=") return (std::abs(l - r) > 0.00001) ? "1" : "0"; + if (op == "<") return (l < r) ? "1" : "0"; + if (op == ">") return (l > r) ? "1" : "0"; return "0"; } }; -// 6. Блок кода { ... } -struct BlockNode : Node { - std::vector> statements; - std::string eval(Context& ctx) override { - std::string lastVal = ""; - for (auto& stmt : statements) { - lastVal = stmt->eval(ctx); - } - return lastVal; - } -}; +// IF / ELSE +struct IfNode : Node { + std::unique_ptr condition; + std::unique_ptr thenBlock; + std::unique_ptr elseBlock; // Может быть nullptr -// 7. Объявление функции (void myFunc() { ... }) -// Мы не выполняем тело, а СОХРАНЯЕМ его в память. -struct FuncDefNode : Node { - std::string name; - std::shared_ptr body; // Используем shared_ptr, чтобы хранить в мапе - FuncDefNode(std::string n, std::shared_ptr b) : name(n), body(b) {} + IfNode(std::unique_ptr c, std::unique_ptr t, std::unique_ptr e) + : condition(std::move(c)), thenBlock(std::move(t)), elseBlock(std::move(e)) {} std::string eval(Context& ctx) override { - ctx.functions[name] = body; + std::string res = condition->eval(ctx); + if (res == "1") { // Истина + thenBlock->eval(ctx); + } else if (elseBlock) { + elseBlock->eval(ctx); + } return ""; } }; -// 8. Вызов функции (myFunc()) +// WHILE +struct WhileNode : Node { + std::unique_ptr condition; + std::unique_ptr body; + WhileNode(std::unique_ptr c, std::unique_ptr b) + : condition(std::move(c)), body(std::move(b)) {} + + std::string eval(Context& ctx) override { + while (true) { + std::string res = condition->eval(ctx); + if (res != "1") break; // Если не 1, выходим + body->eval(ctx); + } + return ""; + } +}; + +// --- МАССИВЫ --- + +// array myArr 10; +struct ArrayDeclNode : Node { + std::string name; + std::unique_ptr sizeExpr; + ArrayDeclNode(std::string n, std::unique_ptr s) : name(n), sizeExpr(std::move(s)) {} + std::string eval(Context& ctx) override { + int size = std::stoi(sizeExpr->eval(ctx)); + ctx.arrays[name] = std::vector(size, "0"); + return ""; + } +}; + +// set(arr, index, value); +struct ArraySetNode : Node { + std::string name; + std::unique_ptr idx; + std::unique_ptr val; + ArraySetNode(std::string n, std::unique_ptr i, std::unique_ptr v) + : name(n), idx(std::move(i)), val(std::move(v)) {} + std::string eval(Context& ctx) override { + if (!ctx.arrays.count(name)) { std::cerr << "Array not found: " << name << std::endl; exit(1); } + int i = std::stoi(idx->eval(ctx)); + if (i < 0 || i >= ctx.arrays[name].size()) { std::cerr << "Index out of bounds" << std::endl; exit(1); } + ctx.arrays[name][i] = val->eval(ctx); + return ""; + } +}; + +// get(arr, index) +struct ArrayGetNode : Node { + std::string name; + std::unique_ptr idx; + ArrayGetNode(std::string n, std::unique_ptr i) : name(n), idx(std::move(i)) {} + std::string eval(Context& ctx) override { + if (!ctx.arrays.count(name)) { std::cerr << "Array not found: " << name << std::endl; exit(1); } + int i = std::stoi(idx->eval(ctx)); + if (i < 0 || i >= ctx.arrays[name].size()) { std::cerr << "Index out of bounds" << std::endl; exit(1); } + return ctx.arrays[name][i]; + } +}; + +struct ArraySizeNode : Node { + std::string name; + ArraySizeNode(std::string n) : name(n) {} + std::string eval(Context& ctx) override { + if (!ctx.arrays.count(name)) return "0"; + return std::to_string(ctx.arrays[name].size()); + } +}; + +// --- INCLUDE --- +// Чтобы не было круговых зависимостей, мы парсим файл прямо тут (костыль, но рабочий для .h файла) +// В реальном проекте парсер нужно передавать или делать Include отдельным механизмом +struct IncludeNode : Node { + std::string filename; + // Нам нужен указатель на функцию парсинга... но мы схитрим + // Мы просто прочитаем файл и добавим его как текст, но AST строится статически. + // Поэтому Include в интерпретаторах часто работает на этапе парсинга, а не выполнения. + // Но ты просил "библиотеки". Сделаем Runtime Include. + + // ВНИМАНИЕ: Для полноценного include здесь нужен доступ к Parser. + // Я оставлю заглушку, а реализацию сделаю в Parser.cpp через рекурсию. + // Это просто маркер. + std::string eval(Context& ctx) override { return ""; } +}; + + +// Остальные ноды (VarDecl, Assign, BinOp, Functions...) остаются такими же, +// скопируй их из предыдущего ответа, я добавлю только ИСПРАВЛЕННЫЙ FOX. + +struct VarDeclNode : Node { + std::string type, name; std::unique_ptr expr; + VarDeclNode(std::string t, std::string n, std::unique_ptr e) : type(t), name(n), expr(std::move(e)) {} + std::string eval(Context& ctx) override { + if(ctx.exists(name)) { std::cerr << "Redeclaration: " << name << std::endl; exit(1); } + ctx.variables[name] = expr->eval(ctx); + return ctx.variables[name]; + } +}; + +struct AssignNode : Node { + std::string name; std::unique_ptr expr; + AssignNode(std::string n, std::unique_ptr e) : name(n), expr(std::move(e)) {} + std::string eval(Context& ctx) override { + if(!ctx.exists(name)) { std::cerr << "Unknown var: " << name << std::endl; exit(1); } + ctx.variables[name] = expr->eval(ctx); + return ctx.variables[name]; + } +}; + +struct BinOpNode : Node { + char op; std::unique_ptr left, right; + BinOpNode(char o, std::unique_ptr l, std::unique_ptr r) : op(o), left(std::move(l)), right(std::move(r)) {} + std::string eval(Context& ctx) override { + std::string lStr = left->eval(ctx); std::string rStr = right->eval(ctx); + bool isStr = (lStr.find_first_not_of("0123456789.-") != std::string::npos) || (rStr.find_first_not_of("0123456789.-") != std::string::npos); + if (op == '+' && isStr) return lStr + rStr; + double l = std::stod(lStr); double r = std::stod(rStr); + if (op == '+') return formatNumber(l+r); + if (op == '-') return formatNumber(l-r); + if (op == '*') return formatNumber(l*r); + if (op == '/') return formatNumber(r!=0 ? l/r : 0); + if (op == '%') return formatNumber((int)l % (int)r); + return "0"; + } +}; + +struct BlockNode : Node { + std::vector> statements; + std::string eval(Context& ctx) override { + std::string last = ""; + for(auto& s : statements) last = s->eval(ctx); + return last; + } +}; + +struct FuncDefNode : Node { + std::string name; std::shared_ptr body; + FuncDefNode(std::string n, std::shared_ptr b) : name(n), body(b) {} + std::string eval(Context& ctx) override { ctx.functions[name] = body; return ""; } +}; + struct FuncCallNode : Node { std::string name; FuncCallNode(std::string n) : name(n) {} - std::string eval(Context& ctx) override { - if (ctx.functions.find(name) == ctx.functions.end()) { - std::cerr << "Error: Function '" << name << "' is not defined." << std::endl; - exit(1); - } - // Выполняем сохраненное тело + if(!ctx.functions.count(name)) { std::cerr << "Unknown func: " << name << std::endl; exit(1); } return ctx.functions[name]->eval(ctx); } }; -// Стандартные функции struct PrintNode : Node { std::unique_ptr expr; PrintNode(std::unique_ptr e) : expr(std::move(e)) {} - std::string eval(Context& ctx) override { - std::cout << expr->eval(ctx) << std::endl; - return ""; - } + std::string eval(Context& ctx) override { std::cout << expr->eval(ctx) << std::endl; return ""; } }; struct InputNode : Node { - std::string eval(Context& ctx) override { - std::string b; std::getline(std::cin, b); return b; - } + std::string eval(Context& ctx) override { std::string b; std::getline(std::cin, b); return b; } }; struct RoundNode : Node { std::unique_ptr expr; @@ -195,4 +286,12 @@ struct RoundNode : Node { }; struct RandomNode : Node { std::string eval(Context& ctx) override { return std::to_string(rand() % 100); } +}; + +// ИСПРАВЛЕННЫЙ FOX NODE: Теперь он выводит текст сам! +struct FoxNode : Node { + std::string eval(Context& ctx) override { + std::cout << " (\\_/)\n (o.o) FoxLang v4.0\n (> <)" << std::endl; + return "fox"; + } }; \ No newline at end of file diff --git a/src/Lexer.cpp b/src/Lexer.cpp index bd7cf4f..1881dcc 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -16,13 +16,12 @@ std::vector Lexer::tokenize() { continue; } - // 2. ОБРАБОТКА КОММЕНТАРИЕВ (НОВОЕ) - // Если видим '/', и следующий символ тоже '/', то это комментарий + // 2. ОБРАБОТКА КОММЕНТАРИЕВ if (current == '/' && pos + 1 < source.length() && source[pos + 1] == '/') { while (pos < source.length() && source[pos] != '\n') { - pos++; // Пропускаем всё до конца строки + pos++; } - continue; // Переходим к следующей итерации цикла + continue; } // 3. Числа @@ -43,9 +42,13 @@ std::vector Lexer::tokenize() { tokens.push_back({TokenType::STRING_LITERAL, str, line}); } // 5. Идентификаторы и Ключевые слова - else if (isalpha(current)) { + // ИСПРАВЛЕНИЕ ТУТ: Добавлена проверка || current == '_' + else if (isalpha(current) || current == '_') { std::string id; - while (pos < source.length() && isalnum(source[pos])) id += source[pos++]; + // И ТУТ: Добавлена проверка || source[pos] == '_' + while (pos < source.length() && (isalnum(source[pos]) || source[pos] == '_')) { + id += source[pos++]; + } if (id == "print") tokens.push_back({TokenType::PRINT, id, line}); else if (id == "input") tokens.push_back({TokenType::INPUT, id, line}); @@ -55,22 +58,43 @@ std::vector Lexer::tokenize() { else if (id == "int") tokens.push_back({TokenType::INT_KW, id, line}); else if (id == "string") tokens.push_back({TokenType::STRING_KW, id, line}); else if (id == "void") tokens.push_back({TokenType::VOID_KW, id, line}); + // Ключевые слова v4.0 + else if (id == "while") tokens.push_back({TokenType::WHILE, id, line}); + else if (id == "if") tokens.push_back({TokenType::IF, id, line}); + else if (id == "else") tokens.push_back({TokenType::ELSE, id, line}); + else if (id == "array") tokens.push_back({TokenType::ARRAY, id, line}); + else if (id == "set") tokens.push_back({TokenType::SET, id, line}); + else if (id == "get") tokens.push_back({TokenType::GET, id, line}); + else if (id == "size") tokens.push_back({TokenType::SIZE, id, line}); + else if (id == "include") tokens.push_back({TokenType::INCLUDE, id, line}); else tokens.push_back({TokenType::IDENTIFIER, id, line}); } // 6. Операторы else { + if (current == '=' && pos+1 < source.length() && source[pos+1] == '=') { + tokens.push_back({TokenType::EQ, "==", line}); pos+=2; continue; + } + if (current == '!' && pos+1 < source.length() && source[pos+1] == '=') { + tokens.push_back({TokenType::NEQ, "!=", line}); pos+=2; continue; + } + switch (current) { case '+': tokens.push_back({TokenType::PLUS, "+", line}); break; case '-': tokens.push_back({TokenType::MINUS, "-", line}); break; case '*': tokens.push_back({TokenType::STAR, "*", line}); break; - case '/': tokens.push_back({TokenType::SLASH, "/", line}); break; // Это деление, если не сработало условие выше + case '/': tokens.push_back({TokenType::SLASH, "/", line}); break; + case '%': tokens.push_back({TokenType::MOD, "%", line}); break; case '(': tokens.push_back({TokenType::LPAREN, "(", line}); break; case ')': tokens.push_back({TokenType::RPAREN, ")", line}); break; case '{': tokens.push_back({TokenType::LBRACE, "{", line}); break; case '}': tokens.push_back({TokenType::RBRACE, "}", line}); break; + case '[': tokens.push_back({TokenType::LBRACKET, "[", line}); break; + case ']': tokens.push_back({TokenType::RBRACKET, "]", line}); break; case ';': tokens.push_back({TokenType::SEMICOLON, ";", line}); break; case ',': tokens.push_back({TokenType::COMMA, ",", line}); break; case '=': tokens.push_back({TokenType::ASSIGN, "=", line}); break; + case '<': tokens.push_back({TokenType::LT, "<", line}); break; + case '>': tokens.push_back({TokenType::GT, ">", line}); break; default: std::cerr << "Lexer Error: Unknown char '" << current << "' at line " << line << std::endl; exit(1); diff --git a/src/Parser.cpp b/src/Parser.cpp index 6613b95..a2622a6 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -1,5 +1,18 @@ #include "Parser.h" +#include "Lexer.h" #include +#include +#include +#include // Нужно для C++17, чтобы работать с путями красиво + +// Хелпер для получения папки из пути к файлу +// Пример: "test/main.fox" -> "test/" +// Пример: "script.fox" -> "./" +std::string getDirectory(const std::string& filepath) { + size_t found = filepath.find_last_of("/\\"); + if (found == std::string::npos) return "./"; + return filepath.substr(0, found + 1); +} Parser::Parser(std::vector t) : tokens(t) {} @@ -11,46 +24,42 @@ Token Parser::consume(TokenType type) { exit(1); } +// --- ВЫРАЖЕНИЯ (Остаются без изменений) --- std::unique_ptr Parser::primary() { - if (tokens[pos].type == TokenType::NUMBER) - return std::make_unique(consume(TokenType::NUMBER).value); - - if (tokens[pos].type == TokenType::STRING_LITERAL) - return std::make_unique(consume(TokenType::STRING_LITERAL).value); + if (tokens[pos].type == TokenType::NUMBER) return std::make_unique(consume(TokenType::NUMBER).value); + if (tokens[pos].type == TokenType::STRING_LITERAL) return std::make_unique(consume(TokenType::STRING_LITERAL).value); + if (tokens[pos].type == TokenType::GET) { + consume(TokenType::GET); consume(TokenType::LPAREN); + std::string name = consume(TokenType::IDENTIFIER).value; + consume(TokenType::COMMA); auto idx = expression(); + consume(TokenType::RPAREN); return std::make_unique(name, std::move(idx)); + } + if (tokens[pos].type == TokenType::SIZE) { + consume(TokenType::SIZE); consume(TokenType::LPAREN); + std::string name = consume(TokenType::IDENTIFIER).value; + consume(TokenType::RPAREN); return std::make_unique(name); + } if (tokens[pos].type == TokenType::IDENTIFIER) { std::string name = consume(TokenType::IDENTIFIER).value; if (tokens[pos].type == TokenType::LPAREN) { - consume(TokenType::LPAREN); - consume(TokenType::RPAREN); + consume(TokenType::LPAREN); consume(TokenType::RPAREN); return std::make_unique(name); } return std::make_unique(name); } - - if (tokens[pos].type == TokenType::INPUT) { - consume(TokenType::INPUT); consume(TokenType::LPAREN); consume(TokenType::RPAREN); - return std::make_unique(); - } - if (tokens[pos].type == TokenType::ROUND) { - consume(TokenType::ROUND); consume(TokenType::LPAREN); auto n = expression(); consume(TokenType::RPAREN); - return std::make_unique(std::move(n)); - } - if (tokens[pos].type == TokenType::RANDOM) { - consume(TokenType::RANDOM); consume(TokenType::LPAREN); consume(TokenType::RPAREN); - return std::make_unique(); - } - if (tokens[pos].type == TokenType::LPAREN) { - consume(TokenType::LPAREN); auto n = expression(); consume(TokenType::RPAREN); return n; - } - + if (tokens[pos].type == TokenType::INPUT) { consume(TokenType::INPUT); consume(TokenType::LPAREN); consume(TokenType::RPAREN); return std::make_unique(); } + if (tokens[pos].type == TokenType::ROUND) { consume(TokenType::ROUND); consume(TokenType::LPAREN); auto n = expression(); consume(TokenType::RPAREN); return std::make_unique(std::move(n)); } + if (tokens[pos].type == TokenType::RANDOM) { consume(TokenType::RANDOM); consume(TokenType::LPAREN); consume(TokenType::RPAREN); return std::make_unique(); } + if (tokens[pos].type == TokenType::LPAREN) { consume(TokenType::LPAREN); auto n = expression(); consume(TokenType::RPAREN); return n; } + std::cerr << "Error: Unexpected token '" << tokens[pos].value << "' line " << tokens[pos].line << std::endl; exit(1); } std::unique_ptr Parser::multiplication() { auto node = primary(); - while (tokens[pos].type == TokenType::STAR || tokens[pos].type == TokenType::SLASH) { + while (tokens[pos].type == TokenType::STAR || tokens[pos].type == TokenType::SLASH || tokens[pos].type == TokenType::MOD) { char op = tokens[pos].value[0]; pos++; node = std::make_unique(op, std::move(node), primary()); } @@ -66,10 +75,19 @@ std::unique_ptr Parser::expression() { return node; } -// ИЗМЕНЕНИЕ: Возвращаем unique_ptr и используем make_unique +std::unique_ptr Parser::comparison() { + auto node = expression(); + if (tokens[pos].type == TokenType::EQ || tokens[pos].type == TokenType::NEQ || + tokens[pos].type == TokenType::LT || tokens[pos].type == TokenType::GT) { + std::string op = tokens[pos].value; pos++; + return std::make_unique(op, std::move(node), expression()); + } + return node; +} + std::unique_ptr Parser::parseBlock() { consume(TokenType::LBRACE); - auto block = std::make_unique(); // Здесь было make_shared + auto block = std::make_unique(); while (tokens[pos].type != TokenType::RBRACE && tokens[pos].type != TokenType::END) { block->statements.push_back(statement()); } @@ -77,11 +95,56 @@ std::unique_ptr Parser::parseBlock() { return block; } +// --- ЛОГИКА ИМПОРТА --- +void processInclude(std::string filename, Context& ctx, std::string currentFile) { + // 1. Вычисляем путь: Папка текущего файла + Имя подключаемого + std::string dir = getDirectory(currentFile); + std::string fullPath = dir + filename; + + // Открываем файл + std::ifstream file(fullPath); + if (!file.is_open()) { + // Если не нашли, пробуем искать просто по имени (в текущей рабочей папке) + file.open(filename); + if (!file.is_open()) { + std::cerr << "Include Error: File '" << fullPath << "' (or '" << filename << "') not found!" << std::endl; + exit(1); + } + fullPath = filename; // Если нашли локально, обновляем путь + } + + std::stringstream buffer; buffer << file.rdbuf(); + Lexer lexer(buffer.str()); + auto tokens = lexer.tokenize(); + + Parser parser(tokens); + parser.globalContext = ctx; // Передаем память + parser.currentFile = fullPath; // Указываем новый файл как текущий + + // ВАЖНО: Включаем режим импорта! + // Это заставит парсер игнорировать вызовы функций в mainLogic + parser.importMode = true; + + parser.run(); + ctx = parser.globalContext; // Забираем обновленную память +} + std::unique_ptr Parser::statement() { - // 1. Объявление переменных + // 1. INCLUDE + if (tokens[pos].type == TokenType::INCLUDE) { + consume(TokenType::INCLUDE); consume(TokenType::LPAREN); + std::string file = consume(TokenType::STRING_LITERAL).value; + consume(TokenType::RPAREN); consume(TokenType::SEMICOLON); + + // ВАЖНО: Передаем текущий файл, чтобы вычислить относительный путь + processInclude(file, globalContext, currentFile); + + return std::make_unique(); + } + + // 2. ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ (Всегда выполняем, даже при импорте!) if (tokens[pos].type == TokenType::INT_KW || tokens[pos].type == TokenType::STRING_KW) { - std::string type = tokens[pos].value; - pos++; + std::string type = tokens[pos].value; pos++; std::string name = consume(TokenType::IDENTIFIER).value; consume(TokenType::ASSIGN); auto expr = expression(); @@ -89,50 +152,105 @@ std::unique_ptr Parser::statement() { return std::make_unique(type, name, std::move(expr)); } - // 2. Объявление функций + // 3. ФУНКЦИИ (Всегда выполняем, то есть запоминаем их) if (tokens[pos].type == TokenType::VOID_KW) { consume(TokenType::VOID_KW); std::string name = consume(TokenType::IDENTIFIER).value; - consume(TokenType::LPAREN); - consume(TokenType::RPAREN); - - // Тут магия: unique_ptr автоматически превратится в shared_ptr при создании FuncDefNode + consume(TokenType::LPAREN); consume(TokenType::RPAREN); auto body = parseBlock(); return std::make_unique(name, std::move(body)); } - // 3. Команда PRINT + // 4. МАССИВЫ (Выполняем, глобальные массивы нужны) + if (tokens[pos].type == TokenType::ARRAY) { + consume(TokenType::ARRAY); + std::string name = consume(TokenType::IDENTIFIER).value; + auto size = expression(); + consume(TokenType::SEMICOLON); + return std::make_unique(name, std::move(size)); + } + + // ========================================================= + // БЛОК ИГНОРИРОВАНИЯ (Код ниже НЕ выполняется при include) + // ========================================================= + + // 5. WHILE + if (tokens[pos].type == TokenType::WHILE) { + consume(TokenType::WHILE); consume(TokenType::LPAREN); + auto cond = comparison(); + consume(TokenType::RPAREN); + auto body = parseBlock(); + + if (importMode) return std::make_unique(); // <-- Игнор + return std::make_unique(std::move(cond), std::move(body)); + } + + // 6. IF + if (tokens[pos].type == TokenType::IF) { + consume(TokenType::IF); consume(TokenType::LPAREN); + auto cond = comparison(); + consume(TokenType::RPAREN); + auto thenB = parseBlock(); + std::unique_ptr elseB = nullptr; + if (tokens[pos].type == TokenType::ELSE) { + consume(TokenType::ELSE); + if (tokens[pos].type == TokenType::IF) elseB = statement(); + else elseB = parseBlock(); + } + + if (importMode) return std::make_unique(); // <-- Игнор + return std::make_unique(std::move(cond), std::move(thenB), std::move(elseB)); + } + + // 7. PRINT if (tokens[pos].type == TokenType::PRINT) { consume(TokenType::PRINT); consume(TokenType::LPAREN); auto expr = expression(); consume(TokenType::RPAREN); consume(TokenType::SEMICOLON); + + if (importMode) return std::make_unique(); // <-- Игнор return std::make_unique(std::move(expr)); } + // 8. FOX if (tokens[pos].type == TokenType::FOX) { consume(TokenType::FOX); consume(TokenType::LPAREN); consume(TokenType::RPAREN); consume(TokenType::SEMICOLON); - return std::make_unique("Fox says: Hello!"); + if (importMode) return std::make_unique(); // <-- Игнор + return std::make_unique(); } + // 9. SET (Arrays) + if (tokens[pos].type == TokenType::SET) { + consume(TokenType::SET); consume(TokenType::LPAREN); + std::string name = consume(TokenType::IDENTIFIER).value; + consume(TokenType::COMMA); auto idx = expression(); + consume(TokenType::COMMA); auto val = expression(); + consume(TokenType::RPAREN); consume(TokenType::SEMICOLON); + if (importMode) return std::make_unique(); // <-- Игнор + return std::make_unique(name, std::move(idx), std::move(val)); + } + + // 10. IDENTIFIER (Присваивание или Вызов функции) if (tokens[pos].type == TokenType::IDENTIFIER) { if (tokens[pos+1].type == TokenType::ASSIGN) { std::string name = consume(TokenType::IDENTIFIER).value; consume(TokenType::ASSIGN); auto expr = expression(); consume(TokenType::SEMICOLON); + + if (importMode) return std::make_unique(); // <-- Игнор присваивания return std::make_unique(name, std::move(expr)); } if (tokens[pos+1].type == TokenType::LPAREN) { std::string name = consume(TokenType::IDENTIFIER).value; consume(TokenType::LPAREN); consume(TokenType::RPAREN); consume(TokenType::SEMICOLON); + + if (importMode) return std::make_unique(); // <-- Игнор вызова (mainLogic не сработает) return std::make_unique(name); } } - // ИЗМЕНЕНИЕ: Просто возвращаем результат parseBlock, никаких преобразований не нужно - if (tokens[pos].type == TokenType::LBRACE) { - return parseBlock(); - } + if (tokens[pos].type == TokenType::LBRACE) return parseBlock(); std::cerr << "Syntax Error: Unknown statement '" << tokens[pos].value << "' at line " << tokens[pos].line << std::endl; exit(1); @@ -141,6 +259,8 @@ std::unique_ptr Parser::statement() { void Parser::run() { while (tokens[pos].type != TokenType::END) { auto stmt = statement(); + // stmt->eval вызывается, но если мы вернули BlockNode (пустышку) при импорте, + // то ничего не произойдет. stmt->eval(globalContext); } } \ No newline at end of file diff --git a/src/Parser.h b/src/Parser.h index 5d21fd2..1db670b 100644 --- a/src/Parser.h +++ b/src/Parser.h @@ -3,22 +3,29 @@ #include "AST.h" #include #include +#include // Не забудь class Parser { std::vector tokens; size_t pos = 0; - Context globalContext; + +public: + Context globalContext; + + // НОВЫЕ ПОЛЯ ДЛЯ ПУТЕЙ И ИМПОРТА + std::string currentFile; // Путь к файлу, который сейчас парсится + bool importMode = false; // Если true, то выполняем только объявления (vars/funcs) + Parser(std::vector t); + Token consume(TokenType type); std::unique_ptr primary(); std::unique_ptr multiplication(); std::unique_ptr expression(); - - std::unique_ptr statement(); - // ИЗМЕНЕНИЕ: теперь возвращает unique_ptr - std::unique_ptr parseBlock(); + std::unique_ptr comparison(); -public: - Parser(std::vector t); + std::unique_ptr statement(); + std::unique_ptr parseBlock(); + void run(); }; \ No newline at end of file diff --git a/src/Token.h b/src/Token.h index 2283c9b..077d97f 100644 --- a/src/Token.h +++ b/src/Token.h @@ -3,15 +3,19 @@ enum class TokenType { NUMBER, STRING_LITERAL, - PLUS, MINUS, STAR, SLASH, - LPAREN, RPAREN, LBRACE, RBRACE, - SEMICOLON, COMMA, ASSIGN, // =, , ; + PLUS, MINUS, STAR, SLASH, MOD, // Добавил MOD (%) + LPAREN, RPAREN, LBRACE, RBRACE, LBRACKET, RBRACKET, // [] + SEMICOLON, COMMA, ASSIGN, + EQ, NEQ, LT, GT, // ==, !=, <, > // Ключевые слова PRINT, INPUT, ROUND, RANDOM, FOX, - INT_KW, STRING_KW, VOID_KW, // int, string, void + INT_KW, STRING_KW, VOID_KW, + WHILE, IF, ELSE, + ARRAY, SET, GET, SIZE, // Массивы + INCLUDE, // Библиотеки - IDENTIFIER, // Имена переменных и функций + IDENTIFIER, END, ERROR }; diff --git a/src/foxlang b/src/foxlang deleted file mode 100755 index 2145ed28fa66948a5cf760aa87afaec9d947485b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280536 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 z%0DIec;Jshvj=o#^yTzZmJ$;Wdpz?8{ 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 diff --git a/src/main.cpp b/src/main.cpp index 27ea438..35a0b11 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,20 +10,27 @@ int main(int argc, char* argv[]) { return 1; } + // 1. Читаем файл std::ifstream file(argv[1]); if (!file.is_open()) { - std::cerr << "Error: File not found!" << std::endl; + std::cerr << "Error: Could not open file " << argv[1] << std::endl; return 1; } std::stringstream buffer; buffer << file.rdbuf(); + std::string code = buffer.str(); - Lexer lexer(buffer.str()); - auto tokens = lexer.tokenize(); + // 2. Запускаем конвейер + Lexer lexer(code); + std::vector tokens = lexer.tokenize(); Parser parser(tokens); + + // ВАЖНО: Передаем имя файла, чтобы парсер знал, где он находится + parser.currentFile = argv[1]; + parser.run(); return 0; -} +} \ No newline at end of file diff --git a/test.fox b/test.fox index 0e9e967..ef7aa44 100644 --- a/test.fox +++ b/test.fox @@ -1,6 +1,30 @@ { + include("script.fox"); + // Глоб. Переменные + string Player = "Artem"; + int hpplayer = 100; + int level = 1; + int usr_input = 0; - print("Добро пожаловать в FoxLang"); - print(input() + input()); + void Hello() { + print("Привет, " + Player + "!"); + print("Тебе предстоит пройти это подземелье"); + } + Hello(); -} + void ShowStats() { + print("-----------Статистика-----------"); + print("Имя игрока: " + Player); + print("Здоровье: " + hpplayer); + print("Уровень: " + level); + } + ShowStats(); + + usr_input = input(); + + if (usr_input == 1) { + init(); + } else { + print("Не найдено действие для этого ввода."); + } +} \ No newline at end of file diff --git a/test/lib_utils.fox b/test/lib_utils.fox new file mode 100644 index 0000000..c369a24 --- /dev/null +++ b/test/lib_utils.fox @@ -0,0 +1,38 @@ +print(">>> Library 'lib_utils.fox' loaded successfully!"); + +// Глобальные переменные для передачи "аргументов" в функции +// (так как в v4.0 аргументы передаются через глобальную память) +int arg_val = 0; +int return_val = 0; + +// --- Функция 1: Вычисление факториала --- +void factorial() { + int counter = 1; + int result = 1; + + // Цикл while + while (counter < arg_val + 1) { + result = result * counter; + counter = counter + 1; + } + return_val = result; +} + +// --- Функция 2: Красивый заголовок --- +void printHeader() { + print("==================================="); + print(" FOX LANG v4.0 DEMO SYSTEM "); + print("==================================="); + fox(); // Вызов встроенной лисы +} + +// --- Функция 3: Проверка четности --- +void checkParity() { + // Используем оператор остатка % + int rem = arg_val % 2; + if (rem == 0) { + print("Number " + arg_val + " is EVEN (Chetnoe)."); + } else { + print("Number " + arg_val + " is ODD (Nechetnoe)."); + } +} \ No newline at end of file diff --git a/test/main_app.fox b/test/main_app.fox new file mode 100644 index 0000000..9448712 --- /dev/null +++ b/test/main_app.fox @@ -0,0 +1,102 @@ +// 1. Подключаем нашу библиотеку +include("lib_utils.fox"); + +// Используем функцию из библиотеки +printHeader(); + +// ========================================== +// ЧАСТЬ 1: Работа с вводом и условиями +// ========================================== +print(""); +print("--- Step 1: User Interaction ---"); +print("Enter your name:"); +string name = input(); + +if (name == "Fox") { + print("Hello, Creator!"); +} else { + print("Welcome, user " + name); +} + +// ========================================== +// ЧАСТЬ 2: Математика и Библиотечные функции +// ========================================== +print(""); +print("--- Step 2: Math & Logic ---"); +print("Enter a small number to calculate Factorial:"); +string inputNum = input(); +int num = inputNum; // Автоматическое преобразование типов (строка -> число) + +// Передаем аргумент через глобальную переменную библиотеки +arg_val = num; +factorial(); // Вызываем функцию из lib_utils.fox + +print("Factorial of " + num + " is: " + return_val); + +// Проверяем на четность +checkParity(); + +// ========================================== +// ЧАСТЬ 3: Массивы и Сортировка (Bubble Sort) +// ========================================== +print(""); +print("--- Step 3: Array Sorting (Bubble Sort) ---"); + +// Объявляем массив на 5 элементов +int arrSize = 5; +array myNumbers arrSize; + +// Заполняем массив случайными числами +int i = 0; +while (i < arrSize) { + int rnd = random(); + set(myNumbers, i, rnd); + i = i + 1; +} + +// Выводим исходный массив +print("Original Array:"); +int k = 0; +while (k < arrSize) { + print("Index " + k + ": " + get(myNumbers, k)); + k = k + 1; +} + +print("Sorting now... please wait..."); + +// Реализация сортировки пузырьком +int n = arrSize; +int pass = 0; + +// Внешний цикл +while (pass < n) { + int j = 0; + // Внутренний цикл (n - 1) + while (j < n - 1) { + // Получаем два соседних элемента + int val1 = get(myNumbers, j); + int val2 = get(myNumbers, j + 1); + + // Если левый больше правого - меняем местами + if (val1 > val2) { + set(myNumbers, j, val2); + set(myNumbers, j + 1, val1); + } + j = j + 1; + } + pass = pass + 1; +} + +// Выводим отсортированный массив +print("Sorted Array (Result):"); +k = 0; +while (k < arrSize) { + print("Index " + k + ": " + get(myNumbers, k)); + k = k + 1; +} + +// ========================================== +// ФИНАЛ +// ========================================== +print(""); +print("Test Complete. FoxLang is working perfectly!"); \ No newline at end of file