Hacer un compilador desde cero no es fácil, y si no tienes muchos conocimientos mucho más difícil. En la
Wikipedia se explica bastante bien como funciona un compilador (sin entrar en muchos detalles y de forma clara), además muestra en una imagen el proceso a seguir, y como puedes ver, el analizador léxico es el primer paso.
No se muy bien como se hace la traducción a código máquina, no he profundizado en este tema demasiado. Pero se me ocurre que puedes hacer que transforme el código a C (por ejemplo) y luego usar un compilador de C para traducirlo a código máquina y poder ejecutarlo.
De esta forma puedes pasar de un lenguaje de programación X (creado por ti) a código máquina (eso es lo que notaría el usuario que lo compila), pero en realidad lo que estás haciendo es pasar el código del lenguaje X a C, y después de C a código máquina.
Como no he profundizado mucho más en este tema no puedo ayudarte más, lo máximo a lo que yo he llegado en este tema de compiladores es a crear un lenguaje X muy básico y ejecutar el código con algo parecido a un intérprete (tipo de compilador) pero que no llegaba a ser un intérprete real.
Un saludo.