Digamos, por ejemplo, que quería pagarle a alguien para que creara un lenguaje de programación o lenguaje de script para mí. ¿Qué tipo de documento necesitarían para comprender completamente qué es exactamente lo que quiero?
Quiero decir, ¿hay documentos estándar que describan el nuevo lenguaje de programación / scripting en cuestión?
Respuestas:
Lo que necesita escribir se llama especificación de idioma .
Debe contener una descripción de la gramática del lenguaje (preferiblemente en formato Backus-Naur-Extended ) y su semántica.
Para la última parte, puede escribir una descripción en sus propias palabras (pero tenga cuidado de ser preciso) o una semántica formal .
fuente
Necesitará lo siguiente:
¿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
fuente
El 99.9% de las veces crear un nuevo idioma es completamente innecesario. Lo más probable es que el retorno de la inversión sea pequeño, y simplemente habría perdido su tiempo.
Lo más probable es que pueda usar Javascript como un lenguaje de programación susceptible, y ya hay analizadores disponibles para la mayoría de los idiomas. También puede usar otros lenguajes de secuencias de comandos que desee si puede encontrar un analizador adecuado para ellos. Implementarlos en su programa requeriría mucho menos trabajo y un mayor rendimiento. Las personas no tienen que aprender otro idioma, solo tienen que aprender su API. Es una solución mucho mejor.
Crear un nuevo idioma es casi siempre malo.
fuente
Puede describir la gramática de su idioma en BNF .
Por ejemplo, esta es la gramática de Python .
fuente
si está utilizando .NET, aquí hay algo con lo que me topé hace algún tiempo. Solo le di una mirada curiosa, pero tal vez te sería útil: ironía .
fuente