Necesitará lo siguiente:
- Una razón para crear un nuevo idioma.
- Una filosofia
- Una definición semántica
- Una descripción léxica de tus tokens.
- Una definición de análisis de sintaxis
¿Cómo será tu idioma diferente? ¿Cuál es su misión? ¿Es funcional? ¿Está orientado a objetos? ¿Es un metalenguaje? ¿Cuáles son sus características únicas? ¿Qué le dará al mundo que no existe (o que existe de una manera fea)? ¿Cómo quieres cambiar las cosas? ¿Se compila o se interpreta? ¿Un lenguaje DSL o de uso general? Esta es su filosofía y dicta mucho sobre el diseño de su idioma.
A continuación, trabaje para tachar sintaxis aproximada y semántica en papel. Esta será su definición semántica ... escribir código falso es una excelente manera de desarrollar sus pensamientos. Lea "El lenguaje de programación C" para obtener un excelente ejemplo de cómo se hace esto. Juega con ello.
Luego deberá definir sus tokens y sintaxis de alguna manera. Los programas luego los procesan en autómatas capaces de leer en cadenas y procesar la sintaxis. Yacc y Bison utilizan expresiones regulares y una sintaxis de estilo BNF para el análisis léxico y sintáctico, respectivamente. También hay herramientas similares a Yacc y Bison para otros idiomas.
También necesitará una base en la teoría del lenguaje / compiladores para saber qué NO hacer. Los ejemplos incluyen gramáticas ambiguas, problemas de generación y manipulación de AST y, en general, cómo simplificarse la vida. Conocer la teoría es muy importante. Consideraría obtener lo siguiente para comenzar:
Compiladores: Principios, Técnicas y Herramientas (Dragón libro)
Compilador moderna implementación en C o moderno compilador Implementación en Java