#include "compiler.h" #include "parser.h" #define MEMORY_SIZE 1024 Code *demo_add_compile() { Code *code = (Code *)malloc(sizeof(Code)); Word memory[MEMORY_SIZE] = {0}; /* Memory array */ code->memory = memory; code->size = MEMORY_SIZE; int i = 1; memory[0].c[0] = 0; memory[0].c[1] = 'z'; memory[0].c[2] = 'r'; memory[0].c[3] = 'e'; memory[i++].u = OP_ADD_REAL; memory[i++].u = 102; memory[i++].u = 103; memory[i++].u = 103; memory[i++].u = OP_SUB_UINT; memory[i++].u = 100; memory[i++].u = 101; memory[i++].u = 100; memory[i++].u = OP_JGT_UINT; memory[i++].u = 100; memory[i++].u = 99; memory[i++].u = 1; memory[i++].u = OP_REAL_TO_STRING; memory[i++].u = 103; memory[i++].u = 1; memory[i++].u = 200; memory[i++].u = OP_PRINT_STRING; memory[i++].u = 201; memory[i++].u = 1; memory[i++].u = 1; memory[i++].u = OP_REAL_TO_UINT; memory[i++].u = 103; memory[i++].u = 1; memory[i++].u = 103; memory[i++].u = OP_UINT_TO_STRING; memory[i++].u = 103; memory[i++].u = 1; memory[i++].u = 104; memory[i++].u = OP_PRINT_STRING; memory[i++].u = 105; memory[i++].u = 1; memory[i++].u = 1; memory[i++].u = OP_READ_STRING; memory[i++].u = 1; memory[i++].u = 1; memory[i++].u = 109; memory[i++].u = OP_PRINT_STRING; memory[i++].u = 110; memory[i++].u = 1; memory[i++].u = 1; memory[i++].u = OP_HALT; memory[i++].u = 0; memory[i++].u = 0; memory[i++].u = 0; memory[99].u = 0; memory[100].u = 5; memory[101].u = 1; memory[102].q = FLOAT_TO_Q16_16(5.0f); memory[103].q = FLOAT_TO_Q16_16(5.0f); return code; } Code *compile(char *buffer) { Code *code = (Code *)malloc(sizeof(Code)); Word memory[MEMORY_SIZE] = {0}; /* Memory array */ code->memory = memory; code->size = MEMORY_SIZE; /* char number[100]; */ memory[0].c[0] = 0; memory[0].c[1] = 'z'; memory[0].c[2] = 'r'; memory[0].c[3] = 'e'; new_Tokenizer(buffer); Token t = nextToken(); do { debug_printToken(t); switch (t.type) { case TOKEN_PRINT: case TOKEN_ADD: case TOKEN_INT: /* strncpy(number, t.start, t.length); */ /* number[t.length + 1] = '\0'; */ /* int i = strtol(number, NULL, 10); */ /* memory[ptr].i = i; */ /* break; */ case TOKEN_LEFT_PAREN: case TOKEN_RIGHT_PAREN: case TOKEN_LEFT_BRACE: case TOKEN_RIGHT_BRACE: case TOKEN_IDENTIFIER: case TOKEN_STRING: case TOKEN_FLOAT: case TOKEN_UINT: case TOKEN_SUB: case TOKEN_MUL: case TOKEN_DIV: case TOKEN_FALSE: case TOKEN_TRUE: case TOKEN_EOF: case TOKEN_ERROR: case TOKEN_MOD: case TOKEN_GT: case TOKEN_LT: case TOKEN_EQ: case TOKEN_GE: case TOKEN_LE: case TOKEN_NE: case TOKEN_NULL: case TOKEN_AND: case TOKEN_OR: case TOKEN_XOR: case TOKEN_SHIFTRIGHT: case TOKEN_SHIFTLEFT: default: break; } t = nextToken(); } while (t.type != TOKEN_EOF); return code; }