diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/bba.c | 17 | ||||
-rw-r--r-- | src/backend/bba.h | 8 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/backend/bba.c b/src/backend/bba.c index fe156c6..64c2984 100644 --- a/src/backend/bba.c +++ b/src/backend/bba.c @@ -1 +1,18 @@ #include "bba.h" + +BBA makeBBA(AstTreeRoots roots) { + BBA bba; + + for (size_t i = 0; i < roots.size; ++i) { + makeBBABack(&bba, roots.data[i]); + } + + return bba; +} + +bool makeBBABack(BBA *bba, AstTreeRoot *root){ + for(size_t i = 0;i < root->variables.size;++i){ + AstTreeVariable *variable = root->variables.data[i]; + + } +} diff --git a/src/backend/bba.h b/src/backend/bba.h index 2e77d78..2fc5741 100644 --- a/src/backend/bba.h +++ b/src/backend/bba.h @@ -55,6 +55,7 @@ typedef enum BBAOperation { typedef union BBAInstructionValue { struct BBAInstruction *instruction; + struct BBABlock *block; u8 u8; i8 i8; @@ -87,4 +88,11 @@ typedef struct BBABlock { } BBABlock; typedef struct BBA { + BBAInstructionValue *globals; + size_t globals_size; + BBABlock blocks; + size_t blocks_size; } BBA; + +BBA makeBBA(AstTreeRoots roots); +bool makeBBABack(BBA *bba, AstTreeRoot *root); |