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:
+12
-3
@@ -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;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user