Muchas personas tienen dificultades o frustraciones con los lenguajes de programación que usan todos los días. Algunos quieren que las cosas se manejen de manera más abstracta, mientras que a otros no les gusta implementar las características que desearían que fueran "estándar". Si usted es un profesional de TI o simplemente un aficionado, muchas veces puede querer crear un nuevo lenguaje de programación.

Pasos

  1. 1 Familiarícese con la tecnología. No puede crear un lenguaje de programación si no sabe cómo usar una computadora.
  2. 2 Familiarícese con la terminología. Los escritores de compiladores a menudo usan terminología desconocida. Lea sobre los compiladores antes de continuar. Asegúrate de saber todo lo que necesitas saber.
  3. 3 Decida qué problema está resolviendo su idioma. ¿Está abordando un problema específico del dominio o es un lenguaje de propósito general?
  4. 4 Piense en la semántica de su lenguaje y los conceptos de la misma.
    • ¿Vas a permitir el acceso directo al puntero o no?
    • ¿Cuáles son los tipos de datos de tu idioma?
    • ¿Es un lenguaje estático o dinámico?
    • ¿Cuál es tu modelo de memoria? ¿Vas a utilizar un recolector de basura o una gestión de memoria manual? (Si usa un recolector de basura, prepárese para escribir uno o adaptar uno existente a su idioma).
    • ¿Cómo se manejará la concurrencia? ¿Vas a usar un modelo simple de enhebrar / bloquear o algo más complejo como Linda o el modelo de actor? (Dado que hoy en día las computadoras tienen múltiples núcleos).
    • ¿Hay funciones primitivas integradas en el lenguaje o todo vendrá de una biblioteca?
    • ¿Cuál es el paradigma o paradigmas de tu lenguaje? ¿Funcional? ¿Orientado a objetos? Prototipo (como JavaScript)? ¿Aspecto orientado? ¿Plantilla orientada? ¿O algo completamente nuevo?
    • ¿Cómo se relaciona su idioma con las bibliotecas e idiomas existentes (principalmente C)? Este punto es importante si está creando un lenguaje específico de dominio.
    • Finalmente, algunas de las respuestas a estas preguntas serán respondidas por el segundo paso y lo ayudarán a responder el siguiente paso.
  5. 5 Piense en algunas tareas específicas que alguien desearía poder realizar con su idioma. Por ejemplo, "pueden querer que un robot siga una línea" o "pueden querer crear programas de escritorio relativamente portátiles en él" o "pueden querer crear aplicaciones web con él".
  6. 6 Experimenta con ideas de sintaxis (el texto del lenguaje) para los ejemplos anteriores.
    • Tenga cuidado de mantener su idioma en la categoría de idioma sin contexto o algo dentro de él. Su generador de analizadores sintácticos lo apreciará más adelante.
  7. 7Escriba una gramática formal para la sintaxis.
  8. 8 Decida si el idioma será interpretado o compilado. Lo que significa que en el mundo interpretado, el usuario normalmente edita su programa en un editor y lo ejecuta directamente en el intérprete; mientras que en el mundo de compilación, su usuario editará su programa, lo compilará, guardará el ejecutable resultante en algún lugar y lo ejecutará.
  9. 9 Escriba el analizador y analizador frontal o busque una herramienta que lo ayude con esto.
    • Además, piense en cómo su compilador / intérprete advertirá a su usuario sobre programas erróneos y errores de sintaxis.
  10. 10 Use la información del analizador para escribir el código del objeto o una representación intermedia. Haga que el analizador cree un AST, luego cree su código objeto del AST usando tres códigos de dirección o su hermano mayor SSA, luego cree una tabla de símbolos para definir sus funciones, variables globales, etc.
    • Además, dependiendo de su idioma, también puede crear tablas de puntero virtuales o tablas de información para sus clases (para admitir la reflexión o RTTI).
  11. 11Escriba el ejecutor o el generador de código que unirá todo.
  12. 12 Escriba muchos programas de prueba para probar el idioma.
    • Desea crear programas que enfaticen las cargas de su gramática formal para ver que su compilador acepta todo lo que está dentro de su definición y rechaza todo lo que está fuera de ella.
  13. 13Considere cómo el usuario depurará sus propios programas.
  14. 14 Si su idioma usa una biblioteca estándar, querrá escribirla. Junto con un recolector de basura u otras características de tiempo de ejecución si lo necesita.
    • Específicamente, si escribe un compilador, necesitará el código que el sistema operativo ejecutará para comenzar a ejecutar el código de usuario (por ejemplo, asignando todas las variables globales).
  15. 15 Publique su idioma, junto con las especificaciones y algunos ejemplos de lo que puede hacer en él.
    • No olvide documentar cómo puede integrarse con bibliotecas existentes, idiomas y cómo usar las características de tiempo de ejecución y / o la biblioteca estándar.