La forma más corta de obtener un error EOF [cerrado]

10

Es simple, simplemente envíe texto a STDERR que contenga la cadena EOF.

De entrada y salida

Su aporte será ninguno; sin embargo, debe enviar el mensaje a STDERR.

Reglas

  • Como se trata de , gana la respuesta más corta.
  • No hay lagunas estándar por favor.
  • Se permite cualquier método aprobado por E / S estándar.
  • Es posible que su código no contenga el "EOF" que generará tal cual en su error.
  • La salida "EOI" está técnicamente permitida, porque la entrada también se puede considerar como un archivo separado.

fuente
2
¿Qué se supone que deben hacer los lenguajes compilados? ¿Tenemos que escribir un programa que haga que la salida del compilador sea "EOF", entre otras cosas?
mi pronombre es monicareinstate
1
@nimi invalidado.
3
Al ver como varias respuestas de salida end of inputo en end of filelugar de EOF, debe aclarar explícitamente si esto está permitido.
Grimmy el
3
votando para cerrar como poco claro. La primera oración dice que se genere un error EOF. La siguiente oración dice que el texto de salida a stderr contenga EOF. La sección de E / S dice que debe enviar un mensaje a STDERR que pruebe que el programa genera un EOFError. Los tres están preguntando cosas diferentes.
qwr

Respuestas:

23

APL (Dyalog Unicode) 17.0, 0 bytes

Dyalog 17.0 espera que los programas terminen limpiamente y lanzará un EOF INTERRUPT( y saldrá con un código 2) si no lo hacen: ¡ Pruébelo en línea!

En contraste, aquí está el programa mínimo que termina de forma limpia, sin causar ningún error (y código 0 al salir): ¡ Pruébelo en línea!

Adán
fuente
9

Python 3 , 1 byte

(

Pruébalo en línea!

Un soporte de apertura simple se interpreta como el comienzo de una tupla. Solo tener un soporte es suficiente para generar un error EOF. También funciona con [y {.

Jitse
fuente
7

Barril , 1 byte

?

Pruébalo en línea!

Cuando no hay entrada, se genera un EOF:

Traceback (most recent call last):
 File "/opt/keg/Keg.py", line 500, in <module>
   exec(header + code + footer)
 File "<string>", line 6, in <module>
 File "/opt/keg/KegLib.py", line 119, in Input
   item = input()
 EOFError: EOF when reading a line

También funciona con ¿

Lyxal
fuente
4

JavaScript, 1 byte / 7 soluciones

Se activan los siguientes tokens SyntaxError: Unexpected end of inputo un mensaje similar según el motor JS.

!
(
+
-
[
{
~

O para resumir:

  • operadores unarios
  • paréntesis de apertura / paréntesis / paréntesis

Prueba exhaustiva en todos los caracteres ASCII

for(n = 0; n < 127; n++) {
  code = String.fromCharCode(n);
  res = false;

  try {
    eval(code);
  }
  catch(e) {
    res = e.toString() == 'SyntaxError: Unexpected end of input';
  }
  if(res) {
    console.log(code);
  }
}

Pruébalo en línea!

Arnauld
fuente
4

Ensamblador Turbo, 0 bytes

Borland Turbo Assembler imprimirá un "Fin de archivo inesperado" al ensamblar un archivo de cero bytes.

Peter Ferrie
fuente
4

Para los usuarios de python; los que publican un código de caracteres, técnicamente ese es el que se SyntaxErrorlee como un EOFERROR. (Para su información, aquí hay un ejemplo de todos los caracteres individuales imprimibles que causarían este mismo error. Obtengo un total de 34:)

from string import printable

chars = []
for c in printable:
    try: eval(c)
    except Exception as e:
        if 'EOF' in str(e):
            chars += [c]
print(chars)

Esto imprime:

['!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '`', '{', '|', '}', '~', ' ','\t', '\n', '\r', '\x0b', '\x0c']

No estoy seguro de si raise EOFErrorse consideraría una respuesta, ya que desafortunadamente ese es el código más corto que se me ocurre para plantear un legítimo EOFErroren Python 3:


Python 3 , 14 bytes

raise EOFError

Pruébalo en línea!

O

Sin aumentar implícitamente el error en Python 2, podría usar esto a expensas de un byte adicional:


Python 2 , 15 bytes

input('\u0004')

Pruébalo en línea!

Pinchazo
fuente
1
raise EOFErrorse considera inválido porque la salida contiene el texto exacto EOFErrorque aparece en el código fuente.
¿Por qué no cuenta como un error EOF si solo "se lee como" uno? No importa de dónde provenga el EOF, siempre que sea un EOF, en el caso de paréntesis individuales, un EOF de entrada de fuente.
Dúthomhas
Porque estoy evitando la respuesta trivial: codificar la salida de error EOF como el programa EOF.
De cualquier manera, simplemente estaba afirmando que el método de un carácter no produce técnicamente un real, EOFErrorpero en py2 el método de entrada sí
Jab
3

Japt v2.0a0, 1 byte

Cada uno arroja: SyntaxError: Unexpected end of input

´
¥
¶
ª
©
«
§
¨
±
µ
÷
Á
Â
Ò
Ó

Pruébelo (los errores se muestran debajo del campo de salida)

También hay una serie de otras posibilidades, no específicas de Japt, que están cubiertas en la solución JS de Arnauld, tales como:

!
&
|
~
^
Lanudo
fuente
3

PHP , 1 byte

1

Pruébalo en línea!

Corre así: php -r 1

Error: PHP Parse error: syntax error, unexpected end of file in ...

Cualquier otro carácter aparte de ;, #espacio y nueva línea debe causar un error similar. Entonces PHP probablemente tiene ASCII characters count - 4soluciones de un solo byte.

Noche2
fuente
3

R, 1 byte, 10 soluciones

Cualquiera de estos personajes solo se activará Error: unexpected end of input.

"
'
`
(
{
+
-
!
?
~
rturnbull
fuente
3
Te lo perdiste ~ llevarlo a 10 :-)
Giuseppe
@Giuseppe Gracias!
rturnbull
2

Python 3 , 1 byte

Perdón por la edición, entendí mal la pregunta al principio: P. Podemos hacer [o (o {para obtener un error EOF inesperado. En el primer caso, espera una lista, en el segundo una tupla y así sucesivamente.

[

Pruébalo en línea!

Divy
fuente
2

Perl, 1 byte

(

Pruébalo con

 perl -e "("
 syntax error at -e line 1, at EOF
 Execution of -e aborted due to compilation errors.
Zorat
fuente
2

T-SQL, 21 bytes

RAISERROR('EOF',11,1)
Aplato
fuente
1

Bash , 1

"

Salida

.code.tio: line 1: unexpected EOF while looking for matching `"'
.code.tio: line 2: syntax error: unexpected end of file

Pruébalo en línea!

Trauma digital
fuente
1

Rubí , 1 byte

!

Pruébalo en línea!

Cualquiera de ["!", "(", "*", "+", "-", ":", "[", "{", "~"]ellos funcionará dependiendo del entorno.

histocrat
fuente
Podrías agregar ["\"", "%", "'", "/", "`"]. Sin embargo, depende del requisito exacto. Algunos generarán SyntaxError mencionando "fin de archivo" o "fin de entrada", pero no pude encontrar ninguno que incluya "EOF".
Eric Duminil
1

Perl 5 , 1 byte

"

Pruébalo en línea!

No muy inspirado, pero es el más corto posible en el idioma.

Salidas Can't find string terminator '"' anywhere before EOF at .code.tio line 1.

Chris
fuente
1

Ir, 0 bytes

Todos los archivos Go deben comenzar con package [identifier]. El mensaje de error es:

can't load package: package main: 
src/test.go:1:1: expected 'package', found 'EOF'
P púrpura
fuente
1

Java, 1 byte

e

Pruébalo en línea!


Método antiguo que es más divertido:]

void a()throws Exception{new java.io.DataInputStream(System.in).readInt();}

Pruébalo en línea!

Dar un toque
fuente
Esperaba una solución de un byte ... Sin embargo, codificación inteligente de EOFException.
Encontraré uno para ti.
Poke
@A_ resulta que muchos caracteres individuales producen un EOF, jaja. Al menos también tengo una versión en tiempo de ejecución: P
Poke