Você não precisa usar C, até porque a linguagem que você vai criar vai ser puramente didática e longe de algo realmente funcional, então basta usar o que você sabe.
Nesse caso, eu recomento estudar um pouco sobre teoria da computação, mas não precisa se aprofundar muito, principalmente porque isso é chato demais. Depois veja algo sobre compiladores em si, e aqui eu recomendo esse web-book chamado Crafting Interpreters, em que o autor começa usando Java, mostra o básico, explica o motivo de Java não ser adequado e reescreve em C, aí sim, usando algoritmos, não diria avançados, pois são relativamente simples, mas mais adequados.