Estoy tratando de hacer un lenguaje de programación. ¿Me puede dar algún comentario sobre lo que hace? ¿Tiene sentido? ¿Parece que funciona?

Asumiendo que no lo ofuscas intencionalmente, parece confuso. ¿Las declaraciones tienen terminación de línea o hay un carácter de terminación? Tal vez las líneas que no tienen terminadores son comienzos de bloques, pero no tiene indicios de eso: no hay sangría, lo que incluso si no es significativo sería útil, y sin llaves. Sería más claro si pudiéramos ver la sintaxis que los termina, supongo.

¿Por qué las declaraciones comienzan con un carácter específico? ¿Hay más de un personaje con el que podrían comenzar y producen diferencias significativas? El uso de caracteres únicos sin palabras de una manera relativamente novedosa hace que su idioma sea más difícil de aprender.

¿Has investigado si el lenguaje que estás creando es analizable de manera determinista? Ese es un importante punto de partida.

Además, ¿por qué? Los idiomas son herramientas, y necesitamos uno nuevo cuando hay que hacer un trabajo para el que ninguna de las herramientas es ideal, y podemos concebir una herramienta mejor. A veces es porque pensamos que nuestra nueva herramienta será mejor en general, esa es la razón habitual para la mayoría de los idiomas conocidos. ¿Qué estás tratando de lograr de manera diferente y por qué crees que sería mejor?

título “I Print”

Supongo que esto establece quizás el título de la ventana de la consola que se crea.

proc “iprint”

Crea un nuevo procedimiento llamado “iprint”: esta es mi primera preocupación con el programa. ¿Por qué el nombre del procedimiento está entre comillas? Lo hace parecer a primera vista como si hubiera una variable de cadena creada con el valor “iprint”.

! i = 4;
! nueva w;

Crea una variable i y asigna el valor 4 y crea una segunda variable w a la que no se le asigna un valor. ¿Por qué estas líneas necesitan un signo de exclamación al principio? Si eso es para mostrar que algo se está creando en esta línea, entonces parece demasiado detallado. Además, dado que los tipos no están especificados para las variables, ¿supongo que su idioma se escribe dinámicamente? En ese caso, “nueva w” no tiene sentido para mí; si trato de acceder a w (como lo hace más adelante para la comparación), qué tipo de variable esperaría (string, int, float, bool, algún otro tipo específico para tu lenguaje)?

? (i! = w) || (w ? (i! = w) || (w> i): w– || << "i no es igual a w. Restando ...";

Parecen dos declaraciones if en línea. No tengo claro qué || está haciendo el operador: en la primera aparición en cada línea se ve como el operador OR habitual, pero luego aparece una segunda vez en cada línea después de disminuir o aumentar wy no puedo calcular qué hace allí.

if (i == w): << "Listo" || hecho "iprint"

Otra declaración if en línea, pero esta utiliza la palabra clave “if” en lugar de un signo de interrogación al comienzo de la línea; no sé si esto es inconsistente o si he entendido mal lo que está sucediendo. Entonces, si i es igual a w, imprimirá “Listo” y luego finalizará el procedimiento.

detener

Marca el final del procedimiento (dado que “done” iprint “parece ser la llamada para finalizar antes).

La pregunta al intentar crear un nuevo idioma es “¿qué problema con los idiomas actuales resuelve esto?”. Por lo tanto, puede decidir intentar crear un lenguaje que sea más legible para los humanos (por alguien que no conozca el código, no solo otros programadores). Tener un objetivo específico en mente ayudará a estructurar su idioma de manera coherente y lógica.

Diviértete con esto 🙂

Lo que supuse es que tiene un número fijo “i” y un número aleatorio “w”

  • Si la “w” es menor que “i”, incremente el valor de “w” en uno e imprima ‘i no es igual a w. Agregando … ‘;
  • Si la “w” es mayor que “i”, reste 1 del valor de “w” e imprima ‘i no es igual a w. Restando … ‘;
  • si “w” e “i” son iguales, imprima ‘Listo’ cierre el programa.

Aunque no sé si eso es correcto