#include #include #include #include "as_tokenizer.h" #include "as_parser.h" #include "utils.h" char *inputBuffer = "start:\n" " add 1\n" " sub start\n" " div\n" "end: eq\n"; int main(int argc, char** argv) { printf("[TEST] assembler parser\n"); // make a memory buffer to FILE* FILE *fp = fmemopen(inputBuffer, strlen(inputBuffer), "r"); Allocator alct = newAllocator(); TokenStream ts = makeTokenStream(alct, fp); Prog prog = parseProg(alct, ts); // compare output Stmt* stmts = prog->stmts->stmts; assert(stmts[0]->instr == NULL); assert(strcmp("start", stmts[0]->label->name) == 0); assert(stmts[1]->label == NULL); assert(stmts[1]->instr->op == OP_ADD); assert(stmts[1]->instr->arg->ival == 1); assert(strcmp("end", stmts[4]->label->name) == 0); assert(stmts[4]->instr->op == OP_EQ); printf("[PASS] assembler parser\n"); deleteAllocator(alct); return 0; }