Kürzester Weg, um einen EOF-Fehler zu erhalten [geschlossen]

10

Es ist einfach, einfach Text an STDERR auszugeben, der die Zeichenfolge enthält EOF.

Input-Output

Ihre Eingabe wird keine sein; Sie sollten die Nachricht jedoch an STDERR ausgeben.

Regeln

  • Da dies , gewinnt die kürzeste Antwort.
  • Bitte keine Standardlücken.
  • Jede von Standard I / O genehmigte Methode ist zulässig.
  • Ihr Code enthält möglicherweise nicht die "EOF", die Sie in Ihrem Fehler unverändert ausgeben.
  • Die Ausgabe von "EOI" ist technisch zulässig, da die Eingabe auch als separate Datei betrachtet werden kann.

quelle
2
Was sollen kompilierte Sprachen tun? Müssen wir ein Programm schreiben, mit dem der Compiler unter anderem "EOF" ausgibt?
Mein Pronomen ist monicareinstate
1
@nimi ungültig.
3
Wenn mehrere Antworten ausgegeben werden end of inputoder end of filestattdessen EOF, sollten Sie explizit klären, ob dies zulässig ist.
Grimmy
3
Abstimmung als unklar zu schließen. Der erste Satz besagt, dass ein EOF-Fehler ausgelöst werden soll. Der nächste Satz besagt, dass Text an stderr ausgegeben werden soll, der EOF enthält. Der E / A-Abschnitt besagt, dass Sie eine Nachricht an STDERR ausgeben sollten, die beweist, dass das Programm einen EOFError generiert. Alle drei fragen verschiedene Dinge.
qwr

Antworten:

9

Python 3 , 1 Byte

(

Probieren Sie es online aus!

Eine einfache öffnende Klammer wird als Beginn eines Tupels interpretiert. Nur eine Klammer reicht aus, um einen EOF-Fehler auszulösen. Funktioniert auch mit [und {.

Jitse
quelle
7

Fass , 1 Byte

?

Probieren Sie es online aus!

Wenn keine Eingabe erfolgt, wird ein EOF ausgelöst:

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

Funktioniert auch mit ¿

Lyxal
quelle
4

JavaScript, 1 Byte / 7 Lösungen

Die folgenden Token werden ausgelöst SyntaxError: Unexpected end of inputoder eine ähnliche Meldung, abhängig von der JS-Engine.

!
(
+
-
[
{
~

Oder um es zusammenzufassen:

  • unäre Operatoren
  • Klammer / Klammer / Klammer öffnen

Ausführlicher Test für alle ASCII-Zeichen

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);
  }
}

Probieren Sie es online aus!

Arnauld
quelle
4

Turbo Assembler, 0 Bytes

Borland Turbo Assembler druckt beim Zusammenstellen einer Null-Byte-Datei ein "unerwartetes Dateiende".

Peter Ferrie
quelle
4

Für die Python-Benutzer; diejenigen, die einen Zeichencode veröffentlichen, technisch gesehen ist dies ein Code, SyntaxErrorder zufällig als gelesen wird EOFERROR. (Zu Ihrer Information, hier ist ein Beispiel für alle druckbaren Einzelzeichen, die denselben Fehler verursachen würden. Ich erhalte insgesamt 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)

Dies druckt:

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

Ich bin mir nicht sicher, ob raise EOFErrordies als Antwort angesehen werden würde, da dies leider der kürzeste Code ist, den ich mir vorstellen kann, um EOFErrorin Python 3 einen legitimen Code zu erstellen :


Python 3 , 14 Bytes

raise EOFError

Probieren Sie es online aus!

ODER

Ohne den Fehler in Python 2 implizit auszulösen, können Sie dies auf Kosten eines zusätzlichen Bytes verwenden:


Python 2 , 15 Bytes

input('\u0004')

Probieren Sie es online aus!

Jab
quelle
1
raise EOFErrorwird als ungültig angesehen, da die Ausgabe den genauen Text enthält, der EOFErrorim Quellcode angezeigt wird.
Warum zählt es nicht als EOF-Fehler, wenn es nur "zufällig als" gelesen wird? Es spielt keine Rolle, woher der EOF kommt, solange es sich um einen EOF handelt - bei einzelnen Klammern um einen Quelleneingang EOF.
Dúthomhas
Weil ich die triviale Antwort vermeide: die EOF-Fehlerausgabe wie das Programm hart zu codieren EOF.
So oder so habe ich einfach gesagt, dass die One-Char-Methode technisch gesehen keine echte erzeugt, EOFErroraber in py2 die Eingabemethode
Jab
3

Japt v2.0a0, 1 Byte

Jeder wirft: SyntaxError: Unexpected end of input

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

Probier es aus (Fehler werden unter dem Ausgabefeld angezeigt)

Es gibt auch eine Reihe anderer Möglichkeiten, die nicht spezifisch für Japt sind und in Arnauld's JS-Lösung behandelt werden, wie zum Beispiel:

!
&
|
~
^
Zottelig
quelle
3

PHP , 1 Byte

1

Probieren Sie es online aus!

Laufen Sie so: php -r 1

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

Alle anderen Zeichen außer ;, #, Raum und neue Zeile sollte einen ähnlichen Fehler verursachen. PHP hat also wahrscheinlich ASCII characters count - 4Einzelbyte-Lösungen.

Nacht2
quelle
3

R, 1 Byte, 10 Lösungen

Jedes dieser Zeichen wird allein ausgelöst Error: unexpected end of input.

"
'
`
(
{
+
-
!
?
~
rturnbull
quelle
3
Du hast es verpasst ~, es auf eine gerade 10 zu bringen :-)
Giuseppe
@ Giuseppe Danke!
Rturnbull
2

Python 3 , 1 Byte

Entschuldigung für die Bearbeitung, habe die Frage zuerst falsch verstanden: P. Wir können [oder (oder {) tun, um einen unerwarteten EOF-Fehler zu erhalten. Im ersten Fall wird eine Liste erwartet, im zweiten ein Tupel und so weiter.

[

Probieren Sie es online aus!

Divy
quelle
2

Perl, 1 Byte

(

Probieren Sie es mit

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

T-SQL, 21 Bytes

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

Bash , 1

"

Ausgabe

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

Probieren Sie es online aus!

Digitales Trauma
quelle
1

Ruby , 1 Byte

!

Probieren Sie es online aus!

Jeder von ["!", "(", "*", "+", "-", ":", "[", "{", "~"]wird je nach Umgebung funktionieren.

Histokrat
quelle
Sie könnten hinzufügen ["\"", "%", "'", "/", "`"]. Dies hängt jedoch von der genauen Anforderung ab. Einige werden SyntaxError auslösen und "Ende der Datei" oder "Ende der Eingabe" erwähnen, aber ich konnte keine finden, die "EOF" enthält.
Eric Duminil
1

Perl 5 , 1 Byte

"

Probieren Sie es online aus!

Nicht sehr inspiriert, aber es ist das kürzestmögliche in der Sprache.

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

Chris
quelle
1

Los, 0 Bytes

Alle Go-Dateien müssen mit beginnen package [identifier]. Die Fehlermeldung lautet:

can't load package: package main: 
src/test.go:1:1: expected 'package', found 'EOF'
Lila P.
quelle
1

Java, 1 Byte

e

Probieren Sie es online aus!


Alte Methode, die mehr Spaß macht:]

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

Probieren Sie es online aus!

Sack
quelle
Ich hatte eine Ein-Byte-Lösung erwartet ... Clevere Codierung von EOFException.
Ich werde einen für dich finden.
Poke
@A_ stellt sich heraus, dass viele einzelne Zeichen einen EOF ergeben, haha. Zumindest habe ich auch eine Laufzeitversion: P.
Poke