how do i make my own c compiler
To make your own c compiler:
* First start with the lexer/tokenizer, it should turn code to tokens like this:
int main(){return 2;} => INT, SPACE_SEPARATOR, {IDENTIFIER, "main"}, OPENING_BRACE, RETURN_KEYWORD, {LITERAL, "2"}, CLOSING_BRACE
to do this make a list of tokens and translate code to tokens (i wrote all c tokens for my own c compiler)
* Second make a Parser:
it will turn tokens to an AST tree
you will use it to compile,
it ressembles this:
main.cpp << not important
|
main_entry: {name: "main", type: "function", return_type: "int"}
|
/
{return, type: "keyword"}
|
return value: {literal: "2", type: "int"}
* And third make an x86 code writer
it should translate the tree to x86
the result for our code in x86 is:
.globl _main
_main:
movl $2 %eax
ret
PS: i am not giving code so you can write your c compiler in any language, and also make you actually feel like you wrote it yourself instead of copy pasting