diff options
Diffstat (limited to 'src/program.h')
-rw-r--r-- | src/program.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/program.h b/src/program.h new file mode 100644 index 0000000..7b40712 --- /dev/null +++ b/src/program.h @@ -0,0 +1,50 @@ +#pragma once + +#include <stdbool.h> +#include <stdint.h> + +typedef enum { + MoveLeft, + MoveRight, + Increment, + Decrement, + StartLoop, + EndLoop, + PutChar, + GetChar, + Allocate, + Free, + EnterTape, + LeaveTape, + PutString, + GetString, + Clear, + Eof, + Invalid +} Symbol; + +typedef struct { + uint32_t len; + uint32_t index; + Symbol* data; +} Program; + +void program_init(char* file_path, Program* program); +void program_peek(Program* program, Symbol* symbol); +void program_next(Program* program, Symbol* symbol); +void program_last(Program* program, Symbol* symbol); +void program_free(Program* program); + +typedef struct { + uint32_t len; + uint32_t index; + uint8_t* data; +} Tape; + +void tape_init(uint32_t len, Tape* tape); +void tape_left(Tape* tape); +void tape_right(Tape* tape); +uint8_t tape_get(Tape* tape); +void tape_set(Tape* tape, uint8_t value); +uint8_t* tape_ptr(Tape* tape); +void tape_free(Tape* tape); |