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 Familiarícese con la tecnología. No puede crear un lenguaje de programación si no sabe cómo usar una computadora.
- 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 Decida qué problema está resolviendo su idioma. ¿Está abordando un problema específico del dominio o es un lenguaje de propósito general?
- 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 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 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.
- 7Escriba una gramática formal para la sintaxis.
- 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 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 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).
- 11Escriba el ejecutor o el generador de código que unirá todo.
- 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.
- 13Considere cómo el usuario depurará sus propios programas.
- 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 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.
Facebook
Twitter
Google+