^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected
¡Pruébelo en línea !: Befunge-93 , C
Gracias a randomdude999 por notar que el nombre de archivo requiere comillas coincidentes para funcionar.
Debe guardarse con el nombre del archivo ^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, donde \n
hay una nueva línea. Debido a esto, el TIO para C no se ejecuta exactamente como se esperaba. Probado para trabajar en Lubuntu.
Explicación (C):
El programa no se compila y tcc muestra felizmente el nombre del archivo como parte de su mensaje de error. Hay varios errores de compilación que puede obtener, en función del comienzo del código. ^
al principio nos da un declaration expected
, que es corto y no contiene caracteres problemáticos como "
. Por otro lado, los desarrolladores de gcc y clang son muy pesimistas y optaron por generar múltiples errores a la vez, lo que no es muy bueno, por lo que no estamos usando sus compiladores.
Explicación (Befunge-93):
Befunge es conveniente para quines porque su código también se puede utilizar como datos de caracteres, gracias al "
comando, que alterna el modo de cadena. Al principio, realizamos algunas operaciones de pila inútiles, luego emitimos un p
(comando de colocación) que coloca un carácter NUL en (0, 1). Luego reflejamos el puntero de instrucciones a la izquierda y comenzamos a leer todo como una cadena. Esto debe hacerse a la izquierda, debido a la naturaleza LIFO de la pila. Después de envolver y alcanzar al "
personaje nuevamente, la cadena termina. Tenga en cuenta que el carácter NUL reemplazó el$
carácter, creando un delimitador a mitad de camino a través de la cadena. Luego empujamos 3 números en la pila y saltamos sobre el NUL (porque desafortunadamente cuelga el intérprete cuando se ejecuta como una instrucción). La parte estática del mensaje de error debe ejecutarse aquí. La mayoría de sus caracteres son no-ops, pero el p
comando consume tres argumentos (de ahí por qué presionamos 3 números, de lo contrario, parte de la cadena se comería aquí), y los caracteres :
& 1
empujan un total de 4 valores a la pila, lo que contrarrestamos con una p
y una $
instrucción (pop y descarte). Luego, se realiza algo de aritmética para empujar los códigos ASCII ^"\n>#001p#"
y finalmente un bucle imprime todos los valores en la pila como caracteres hasta que encuentra un carácter NUL y termina.