# My first interpreter Code for a very simple interpreter. Accompanying blogpost: https://alloca.space/blog/my-first-interpreter.html ## Build and run Requires: gcc, make ```sh make run ``` ## Example Program ```go sum = 0 counter = 10 while counter { sum = add(sum, counter) counter = add(counter, negate(1)) } print(sum) ``` ## Structure - `main.c` - entry point. Reads user input and calls the interpreter - `run.c` - glue code. invokes the interpreter stages. - `ast.h` - AST definitions - `lex.h` - Tokens definitions - `lex.c` - Stage 1 - Lexing: Text -> Tokens - `parsing.c` - Stage 2 - Parsing: Tokens -> Ast - `execute.c` - Stage 3 - Execute: Ast -> Output