diff options
Diffstat (limited to 'src/compiler/code_generator')
-rw-r--r-- | src/compiler/code_generator/code_generator.c | 19 | ||||
-rw-r--r-- | src/compiler/code_generator/code_generator.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/compiler/code_generator/code_generator.c b/src/compiler/code_generator/code_generator.c index 75b89c6..bf77419 100644 --- a/src/compiler/code_generator/code_generator.c +++ b/src/compiler/code_generator/code_generator.c @@ -76,6 +76,24 @@ Instructions codeGenerator(SourceCode *code) { return error; } +Instructions codeGeneratorWithPrint(SourceCode *code) { + ParsedTree *root = treeParserWithPrint(code); + if (root != NULL) { + printf("----tree parsed:\n"); + printParsedTreeNode(root); + Instructions instructions = _codeGenerator(root, code); + + deleteParsedTree(root); + return instructions; + } + fprintf(stderr, "error in tree parser\n"); + const Instructions error = { + .instructions = NULL, + .size = ERROR_SIZE, + }; + return error; +} + Instructions _codeGenerator(ParsedTree *root, SourceCode *code) { const TreeScopeMetadata *metadata = root->metadata; @@ -112,6 +130,7 @@ RETURN_ERROR: bool nodeToInstruction(ParsedTree *tree, Instruction **instructions, size_t *instructions_size, size_t *instructions_inserted, SourceCode *code) { + /*printf("Parsing token = %s\n", TREE_TOKEN_STRINGS[tree->token]);*/ switch (tree->token) { case TREE_TOKEN_FUNCTION_CALL: { const TreeFunctionCallMetadata *tree_metadata = tree->metadata; diff --git a/src/compiler/code_generator/code_generator.h b/src/compiler/code_generator/code_generator.h index 0ae3219..902d76b 100644 --- a/src/compiler/code_generator/code_generator.h +++ b/src/compiler/code_generator/code_generator.h @@ -37,6 +37,7 @@ extern void deleteInstruction(Instruction instruction); extern void deleteInstructions(Instructions instructions); extern Instructions codeGenerator(SourceCode *code); +extern Instructions codeGeneratorWithPrint(SourceCode *code); extern Instructions _codeGenerator(ParsedTree *root, SourceCode *code); extern bool nodeToInstruction(ParsedTree *tree, Instruction **instructions, |