Cara terpendek untuk mendapatkan EOF Error [ditutup]


10

Sangat sederhana, cukup tampilkan teks ke STDERR yang berisi string EOF.

Input output

Masukan Anda tidak akan ada; Namun, Anda harus menampilkan pesan ke STDERR.

Aturan

  • Karena ini adalah , jawaban terpendek menang.
  • Tolong, jangan ada celah standar.
  • Metode apa pun yang disetujui oleh I / O Standar diizinkan.
  • Kode Anda mungkin tidak mengandung "EOF" yang akan Anda hasilkan apa adanya dalam kesalahan Anda.
  • Mengeluarkan "EOI" secara teknis diperbolehkan, karena input juga dapat dianggap sebagai file terpisah.

2
Apa yang seharusnya dilakukan oleh bahasa yang dikompilasi? Apakah kita harus menulis sebuah program yang membuat keluaran kompiler "EOF" antara lain?
kata ganti saya adalah monicareinstate


1
@nimi Divalidasi.

3
Melihat beberapa jawaban sebagai hasil end of inputatau end of filebukan EOF, Anda harus mengklarifikasi secara eksplisit apakah ini diizinkan.
Grimmy

3
suara untuk ditutup tidak jelas. Kalimat pertama mengatakan untuk meningkatkan kesalahan EOF. Kalimat berikutnya mengatakan untuk menampilkan teks ke stderr yang berisi EOF. Bagian I / O mengatakan Anda harus menampilkan pesan ke STDERR yang membuktikan bahwa program menghasilkan EOFError. Ketiganya menanyakan hal yang berbeda.
qwr

Jawaban:


23

APL (Dyalog Unicode) 17.0, 0 byte

Dyalog 17.0 mengharapkan program untuk menghentikan diri mereka sendiri dengan bersih dan akan melempar EOF INTERRUPT(dan keluar dengan kode 2) jika tidak: Coba online!

Sebaliknya, di sini adalah program minimal yang menghentikan dirinya sendiri dengan bersih, tidak menyebabkan kesalahan (dan kode 0 saat keluar): Coba online!


9

Python 3 , 1 byte

(

Cobalah online!

Braket pembuka biasa ditafsirkan sebagai awal tupel. Hanya memiliki satu braket sudah cukup untuk meningkatkan kesalahan EOF. Juga bekerja dengan [dan {.


7

Tong , 1 byte

?

Cobalah online!

Ketika tidak ada input, EOF dinaikkan:

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

Juga bekerja dengan ¿


4

JavaScript, solusi 1 byte / 7

Pemicu token berikut SyntaxError: Unexpected end of input, atau pesan serupa tergantung pada mesin JS.

!
(
+
-
[
{
~

Atau untuk meringkas:

  • operator unary
  • kurung buka / braket / brace

Tes lengkap pada semua karakter 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);
  }
}

Cobalah online!


4

Turbo Assembler, 0 byte

Borland Turbo Assembler akan mencetak "Akhir file tak terduga" saat merakit file byte nol.


4

Untuk pengguna python; yang memposting satu kode karakter, secara teknis itu adalah SyntaxErroryang kebetulan dibaca sebagai EOFERROR. (FYI, inilah contoh semua karakter tunggal yang dapat dicetak yang akan menyebabkan kesalahan yang sama ini, saya mendapatkan total 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)

Ini mencetak:

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

Saya tidak yakin apakah raise EOFErrorakan dianggap sebagai jawaban karena sayangnya itu adalah kode terpendek yang dapat saya pikirkan untuk mengajukan yang sah EOFErrordengan Python 3:


Python 3 , 14 byte

raise EOFError

Cobalah online!

ATAU

Tanpa secara implisit meningkatkan kesalahan dalam Python 2 Anda bisa menggunakan ini dengan mengorbankan byte tambahan:


Python 2 , 15 byte

input('\u0004')

Cobalah online!


1
raise EOFErrordianggap tidak valid karena output berisi teks EOFErroryang muncul di kode sumber.

Mengapa tidak dihitung sebagai kesalahan EOF jika hanya "salah baca" saja? Tidak masalah dari mana EOF berasal, asalkan EOF - dalam kasus kurung tunggal, sumber input EOF.
Dúthomhas

Karena saya menghindari jawaban sepele: hard-coding output kesalahan EOF seperti program EOF.

Either way saya hanya menyatakan bahwa metode satu char tidak secara teknis menghasilkan nyata EOFErrortetapi dalam py2 metode input tidak
Jab


3

Japt v2.0a0, 1 byte

Setiap lemparan: SyntaxError: Unexpected end of input

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

Uji (Kesalahan ditampilkan di bawah bidang output)

Ada juga sejumlah kemungkinan lain, tidak spesifik untuk Japt, yang tercakup dalam solusi JS Arnauld, seperti:

!
&
|
~
^

3

PHP , 1 byte

1

Cobalah online!

Jalankan seperti ini: php -r 1

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

Setiap karakter lain selain dari ;, #, ruang dan baris baru harus menyebabkan kesalahan yang sama. Jadi PHP mungkin memiliki ASCII characters count - 4solusi byte tunggal.


3

R, 1 byte, 10 solusi

Salah satu dari karakter ini saja yang akan memicu Error: unexpected end of input.

"
'
`
(
{
+
-
!
?
~

3
Anda ketinggalan ~untuk membawanya ke 10 :-)
Giuseppe

@Giuseppe Terima kasih!
rturnbull

2

Python 3 , 1 byte

Maaf untuk hasil edit, salah paham pertanyaan pada awalnya: P. Kita dapat melakukan [atau (atau {untuk mendapatkan kesalahan EOF yang tidak terduga. Dalam kasus pertama, ia mengharapkan daftar, dalam tuple kedua dan seterusnya.

[

Cobalah online!


2

Perl, 1 byte

(

Cobalah

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



1

Ruby , 1 byte

!

Cobalah online!

Semua ["!", "(", "*", "+", "-", ":", "[", "{", "~"]akan bekerja tergantung pada lingkungan.


Anda bisa menambahkan ["\"", "%", "'", "/", "`"]. Itu tergantung pada persyaratan yang tepat. Beberapa akan meningkatkan SyntaxError menyebutkan "end of file" atau "end-of-input", tetapi saya tidak dapat menemukan yang termasuk "EOF".
Eric Duminil


1

Perl 5 , 1 byte

"

Cobalah online!

Tidak terlalu terinspirasi, tetapi ini adalah yang sesingkat mungkin dalam bahasa.

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


1

Lanjutkan, 0 byte

Semua file Go harus dimulai dengan package [identifier]. Pesan kesalahan adalah:

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

1

Java, 1 byte

e

Cobalah online!


Metode lama yang lebih menyenangkan:]

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

Cobalah online!


Saya mengharapkan solusi satu-byte ... Pengodean EOFException yang cerdas.

Saya akan menemukan satu untuk Anda.
Poke

@ A_ ternyata banyak karakter tunggal menghasilkan EOF, haha. Setidaknya saya punya versi runtime juga: P
Poke
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.