feat: Implement compiler and virtual machine for Fig language

- Added Compiler class with methods for compiling programs, statements, and expressions.
- Introduced Proto structure to hold compiled bytecode and constants.
- Implemented expression compilation including literals, identifiers, and infix expressions.
- Developed statement compilation for variable declarations and expression statements.
- Created a VM class to execute compiled bytecode with support for arithmetic and comparison operations.
- Added Object and Value classes for handling different data types and memory management.
- Implemented String and Struct objects for enhanced data representation.
- Established a parser for parsing variable declarations and statements.
- Included tests for the VM and object representations.
This commit is contained in:
2026-02-20 14:05:56 +08:00
parent f2e899c7a7
commit 2631f76da1
31 changed files with 1722 additions and 94 deletions
+12 -3
View File
@@ -10,9 +10,18 @@
namespace Fig
{
DynArray<AstNode *> Parser::parseAll()
Result<Program *, Error> Parser::Parse()
{
DynArray<AstNode *> nodes;
return nodes;
Program *program = new Program;
while (!isEOF)
{
const auto &result = parseStatement();
if (!result)
{
return std::unexpected(result.error());
}
program->nodes.push_back(*result);
}
return program;
}
};