diff --git a/src/Compiler/Compiler.cpp b/src/Compiler/Compiler.cpp deleted file mode 100644 index c8d8d8d..0000000 --- a/src/Compiler/Compiler.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -namespace Fig -{ - void Compiler::compile(Ast::Statement stmt) - { - using enum Ast::AstType; - using namespace Ast; - Ast::AstType type = stmt->getType(); - - switch (type) - { - case VarDefSt: { - auto vd = std::static_pointer_cast(stmt); - const FString name = vd->name; - } - } - } -}; // namespace Fig \ No newline at end of file diff --git a/src/Compiler/Compiler.hpp b/src/Compiler/Compiler.hpp deleted file mode 100644 index 3612283..0000000 --- a/src/Compiler/Compiler.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "Ast/astBase.hpp" -#include -#include -#include - -#include - -namespace Fig -{ - class Compiler - { - private: - std::vector source; - std::vector output; // std::vector - - std::vector constants; - public: - std::vector getOutput() const { return output; } - std::vector getConstantPool() const { return constants; } - - Compiler() {} - Compiler(std::vector _source) : source(std::move(_source)) {} - - void compile_expr(Ast::Expression); - - void compile(Ast::Statement); - - void CompileAll(); - }; -}; // namespace Fig \ No newline at end of file diff --git a/src/Evaluator/Core/EvalBinary.cpp b/src/Evaluator/Core/EvalBinary.cpp index 7a303dc..dbaef63 100644 --- a/src/Evaluator/Core/EvalBinary.cpp +++ b/src/Evaluator/Core/EvalBinary.cpp @@ -1,4 +1,4 @@ -#include "Ast/Expressions/BinaryExpr.hpp" +#include #include #include #include diff --git a/src/Evaluator/Core/EvalFunctionCall.cpp b/src/Evaluator/Core/EvalFunctionCall.cpp index df6a1fb..c6a8da6 100644 --- a/src/Evaluator/Core/EvalFunctionCall.cpp +++ b/src/Evaluator/Core/EvalFunctionCall.cpp @@ -1,5 +1,5 @@ -#include "Ast/functionParameters.hpp" -#include "Evaluator/Value/value.hpp" +#include +#include #include #include #include diff --git a/src/Evaluator/Core/EvalInitExpr.cpp b/src/Evaluator/Core/EvalInitExpr.cpp index 197748a..60cd005 100644 --- a/src/Evaluator/Core/EvalInitExpr.cpp +++ b/src/Evaluator/Core/EvalInitExpr.cpp @@ -1,4 +1,4 @@ -#include "Evaluator/Value/value.hpp" +#include #include #include #include diff --git a/src/Evaluator/Core/EvalLvObject.cpp b/src/Evaluator/Core/EvalLvObject.cpp index e666c9f..2309e2f 100644 --- a/src/Evaluator/Core/EvalLvObject.cpp +++ b/src/Evaluator/Core/EvalLvObject.cpp @@ -1,4 +1,4 @@ -#include "Evaluator/Value/value.hpp" +#include #include #include #include diff --git a/src/Evaluator/Core/EvalStatement.cpp b/src/Evaluator/Core/EvalStatement.cpp index ad6a293..59c81df 100644 --- a/src/Evaluator/Core/EvalStatement.cpp +++ b/src/Evaluator/Core/EvalStatement.cpp @@ -1,11 +1,12 @@ -#include "Ast/AccessModifier.hpp" -#include "Ast/Expressions/FunctionCall.hpp" -#include "Ast/astBase.hpp" -#include "Ast/functionParameters.hpp" -#include "Core/fig_string.hpp" -#include "Evaluator/Core/StatementResult.hpp" -#include "Evaluator/Value/Type.hpp" -#include "Evaluator/Value/value.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -236,6 +237,15 @@ namespace Fig add(l, r) {...} } */ + if (ValueType::isTypeBuiltin(structType)) + { + throw EvaluatorError( + u8"BadUserError", + std::format("Don't overload built-in type operators plz! `{}`", prettyType(structTypeObj).toBasicString()), + ip + ); + } + using enum Ast::Operator; static const std::unordered_map> magic_name_to_op = { // 算术 diff --git a/src/Evaluator/Core/EvalUnary.cpp b/src/Evaluator/Core/EvalUnary.cpp index eda404a..b79dd30 100644 --- a/src/Evaluator/Core/EvalUnary.cpp +++ b/src/Evaluator/Core/EvalUnary.cpp @@ -1,4 +1,4 @@ -#include "Evaluator/Value/value.hpp" +#include #include #include #include diff --git a/src/Evaluator/Value/value.hpp b/src/Evaluator/Value/value.hpp index 2ac8280..80c6b73 100644 --- a/src/Evaluator/Value/value.hpp +++ b/src/Evaluator/Value/value.hpp @@ -1,5 +1,5 @@ #pragma once -#include "Core/fig_string.hpp" +#include #include #include #include @@ -623,7 +623,7 @@ namespace Fig friend Object operator!(const Object &v) { if (!v.is()) - throw ValueError( + throw ValueError( FString(std::format("Logical NOT requires bool: '{}'", v.getTypeInfo().name.toBasicString()))); return Object(!v.as()); } diff --git a/src/Evaluator/evaluator.cpp b/src/Evaluator/evaluator.cpp index 82db4bf..234adce 100644 --- a/src/Evaluator/evaluator.cpp +++ b/src/Evaluator/evaluator.cpp @@ -1,7 +1,7 @@ -#include "Ast/astBase.hpp" -#include "Core/fig_string.hpp" -#include "Evaluator/Core/StatementResult.hpp" -#include "Evaluator/Value/value.hpp" +#include +#include +#include +#include #include #include diff --git a/src/Parser/parser.cpp b/src/Parser/parser.cpp index 51df3ab..5134bd9 100644 --- a/src/Parser/parser.cpp +++ b/src/Parser/parser.cpp @@ -1,4 +1,4 @@ -#include "Ast/Expressions/VarExpr.hpp" +#include #include #include #include @@ -194,7 +194,8 @@ namespace Fig else if (isThis(TokenType::Colon)) // : { next(); // skip `:` - Ast::Expression type_exp = parseExpression(0, TokenType::Comma, TokenType::RightParen, TokenType::Assign); + Ast::Expression type_exp = + parseExpression(0, TokenType::Comma, TokenType::RightParen, TokenType::Assign); if (isThis(TokenType::Assign)) // = { next(); // skip `=` @@ -927,10 +928,7 @@ namespace Fig } expect(TokenType::RightBrace); next(); // consume `}` - return makeAst( - structe, - args, - static_cast(mode)); + return makeAst(structe, args, static_cast(mode)); } Ast::Expression Parser::__parseTupleOrParenExpr() diff --git a/src/Parser/parser.hpp b/src/Parser/parser.hpp index 5df84e0..e5c981e 100644 --- a/src/Parser/parser.hpp +++ b/src/Parser/parser.hpp @@ -1,6 +1,6 @@ #pragma once -#include "Token/token.hpp" +#include #include #include #include @@ -154,10 +154,8 @@ namespace Fig tokenPruduced++; if (tok == IllegalTok) throw lexer.getError(); currentTokenIndex = tokenPruduced - 1; - setCurrentAAI(Ast::AstAddressInfo{.line = tok.line, - .column = tok.column, - .sourcePath = sourcePathPtr, - .sourceLines = sourceLinesPtr}); + setCurrentAAI(Ast::AstAddressInfo{ + .line = tok.line, .column = tok.column, .sourcePath = sourcePathPtr, .sourceLines = sourceLinesPtr}); previousTokens.push_back(tok); } @@ -314,16 +312,18 @@ namespace Fig Ast::MapExpr __parseMapExpr(); // entry: current is `{` Ast::InitExpr __parseInitExpr(Ast::Expression); // entry: current is `{`, ahead is struct type exp. - - Ast::Expression __parseTupleOrParenExpr(); // entry: current is `(` + Ast::Expression __parseTupleOrParenExpr(); // entry: current is `(` Ast::FunctionLiteralExpr __parseFunctionLiteralExpr(); // entry: current is Token::LParen after Token::Function Ast::Import __parseImport(); // entry: current is Token::Import Ast::Statement __parseStatement(bool = true); // entry: (idk) - Ast::Expression parseExpression(Precedence, TokenType = TokenType::Semicolon, TokenType = TokenType::Semicolon, TokenType = TokenType::Semicolon); + Ast::Expression parseExpression(Precedence, + TokenType = TokenType::Semicolon, + TokenType = TokenType::Semicolon, + TokenType = TokenType::Semicolon); std::vector parseAll(); }; }; // namespace Fig \ No newline at end of file diff --git a/src/Repl/Repl.cpp b/src/Repl/Repl.cpp index c914d63..2957773 100644 --- a/src/Repl/Repl.cpp +++ b/src/Repl/Repl.cpp @@ -1,6 +1,6 @@ -#include "Ast/astBase.hpp" -#include "Error/error.hpp" -#include "Error/errorLog.hpp" +#include +#include +#include #include #include #include @@ -31,10 +31,7 @@ namespace Fig ostream << Object::getNullInstance()->toString().toBasicString(); continue; } - if (line == u8"!exit") - { - break; - } + if (line == u8"!exit") { break; } Lexer lexer(line, sourcePath, sourceLines); Parser parser(lexer, sourcePath, sourceLines); @@ -50,7 +47,7 @@ namespace Fig } catch (AddressableError &e) { - ostream << "Oops!\n"; + ostream << "Oops!\n"; ErrorLog::logAddressableError(e); ostream << "\n"; }