Cách ngắn nhất để nhận Lỗi EOF [đã đóng]


10

Thật đơn giản, chỉ cần xuất văn bản thành STDERR chứa chuỗi EOF.

Đầu ra đầu vào

Đầu vào của bạn sẽ là không có; tuy nhiên, bạn nên xuất thông báo sang STDERR.

Quy tắc

  • Vì đây là , câu trả lời ngắn nhất sẽ thắng.
  • Không có sơ hở tiêu chuẩn xin vui lòng.
  • Bất kỳ phương pháp nào được phê duyệt bởi I / O tiêu chuẩn đều được cho phép.
  • Mã của bạn có thể không chứa "EOF" mà bạn sẽ xuất như là lỗi của bạn.
  • Xuất "EOI" được cho phép về mặt kỹ thuật, bởi vì đầu vào cũng có thể được coi là một tệp riêng biệt.

2
Các ngôn ngữ được biên dịch phải làm là gì? Chúng ta có phải viết một chương trình làm cho trình biên dịch xuất "EOF" trong số những thứ khác không?
đại từ của tôi là monicareinstate


1
@nimi Không hợp lệ.

3
Xem như một số câu trả lời đầu ra end of inputhoặc end of filethay vì EOF, bạn nên làm rõ một cách rõ ràng cho dù điều này được cho phép.
Grimmy

3
bỏ phiếu để đóng như không rõ ràng. Câu đầu tiên nói để tăng lỗi EOF. Câu tiếp theo nói với văn bản đầu ra cho thiết bị lỗi chuẩn chứa EOF. Phần I / O nói rằng bạn nên xuất một thông báo tới STDERR để chứng minh rằng chương trình tạo EOFError. Cả ba đều hỏi những điều khác nhau.
qwr

Câu trả lời:



9

Python 3 , 1 byte

(

Hãy thử trực tuyến!

Một khung mở đơn giản được hiểu là sự khởi đầu của một tuple. Chỉ cần có một dấu ngoặc là đủ để phát sinh lỗi EOF. Cũng làm việc với [{.


7

Keg , 1 byte

?

Hãy thử trực tuyến!

Khi không có đầu vào, EOF sẽ được nâng lên:

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

Cũng hoạt động với ¿


4

JavaScript, giải pháp 1 byte / 7

Trình kích hoạt mã thông báo sau SyntaxError: Unexpected end of inputhoặc thông báo tương tự tùy thuộc vào công cụ JS.

!
(
+
-
[
{
~

Hoặc để tóm tắt:

  • khai thác đơn phương
  • mở ngoặc / ngoặc / nẹp

Kiểm tra toàn diện trên tất cả các ký tự 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);
  }
}

Hãy thử trực tuyến!


4

Bộ lắp ráp Turbo, 0 byte

Borland Turbo Assembler sẽ in một "Kết thúc tệp không mong đợi" khi lắp ráp tệp không byte.


4

Đối với người dùng python; những người đăng một mã ký tự, về mặt kỹ thuật đó là một mã SyntaxErrorxảy ra để đọc như một EOFERROR. (FYI, đây là một ví dụ về tất cả các ký tự đơn có thể in được sẽ gây ra lỗi tương tự Tôi đang nhận tổng cộng 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)

Bản in này:

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

Tôi không chắc liệu raise EOFErrorcó được coi là một câu trả lời không vì đó là mã ngắn nhất mà tôi có thể nghĩ ra để nâng cao tính hợp pháp EOFErrortrong Python 3:


Python 3 , 14 byte

raise EOFError

Hãy thử trực tuyến!

HOẶC LÀ

Nếu không hoàn toàn nâng cao lỗi trong Python 2, bạn có thể sử dụng điều này với chi phí thêm một byte:


Python 2 , 15 byte

input('\u0004')

Hãy thử trực tuyến!


1
raise EOFErrorđược coi là không hợp lệ vì đầu ra chứa văn bản chính xác EOFErrorxuất hiện trong mã nguồn.

Tại sao nó không được tính là lỗi EOF nếu chỉ có tình cờ đọc được là một lỗi? Không quan trọng EOF đến từ đâu, miễn là nó là EOF - trong trường hợp dấu ngoặc đơn, EOF đầu vào nguồn.
Dúthomhas

Bởi vì tôi đang tránh câu trả lời tầm thường: mã hóa cứng đầu ra lỗi EOF như chương trình EOF.

Dù bằng cách nào, tôi chỉ đơn giản nói rằng phương thức char không tạo ra kỹ thuật thật EOFErrornhưng trong py2, phương thức nhập vào
Jab


3

Japt v2.0a0, 1 byte

Mỗi lần ném: SyntaxError: Unexpected end of input

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

Kiểm tra nó (Lỗi được hiển thị bên dưới trường đầu ra)

Ngoài ra còn có một số khả năng khác, không dành riêng cho Japt, được đề cập trong giải pháp JS của Arnauld, như:

!
&
|
~
^

3

PHP , 1 byte

1

Hãy thử trực tuyến!

Chạy như thế này: php -r 1

Lỗi: PHP Parse error: syntax error, unexpected end of file in ...

Bất kỳ nhân vật khác ngoài ;, #, không gian và dòng mới nên gây ra một lỗi tương tự. Vì vậy, PHP có thể có ASCII characters count - 4các giải pháp byte đơn.


3

R, 1 byte, 10 giải pháp

Bất kỳ nhân vật nào trong số này sẽ kích hoạt Error: unexpected end of input.

"
'
`
(
{
+
-
!
?
~

3
Bạn đã bỏ lỡ ~để mang nó đến một số chẵn 10 :-)
Giuseppe

@Giuseppe Cảm ơn!
rturnbull

2

Python 3 , 1 byte

Xin lỗi vì đã chỉnh sửa, lúc đầu đã hiểu nhầm câu hỏi: P. Chúng ta có thể thực hiện [hoặc (hoặc {để nhận lỗi EOF không mong muốn. Trong trường hợp đầu tiên, nó mong đợi một danh sách, trong giây thứ hai, v.v.

[

Hãy thử trực tuyến!


2

Perl, 1 byte

(

Hãy thử nó với

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



1

Ruby , 1 byte

!

Hãy thử trực tuyến!

Bất kỳ ["!", "(", "*", "+", "-", ":", "[", "{", "~"]sẽ làm việc tùy thuộc vào môi trường.


Bạn có thể thêm ["\"", "%", "'", "/", "`"]. Nó phụ thuộc vào yêu cầu chính xác, mặc dù. Một số người sẽ nêu lên SyntaxError khi đề cập đến "phần cuối của tệp" hoặc "phần cuối của đầu vào", nhưng tôi không thể tìm thấy bất kỳ phần nào bao gồm "EOF".
Eric Duminil


1

Perl 5 , 1 byte

"

Hãy thử trực tuyến!

Không có nhiều cảm hứng, nhưng nó ngắn nhất có thể trong ngôn ngữ.

Đầu ra Can't find string terminator '"' anywhere before EOF at .code.tio line 1.


1

Đi, 0 byte

Tất cả các tệp Go phải bắt đầu bằng package [identifier]. Thông báo lỗi là:

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

1

Java, 1 byte

e

Hãy thử trực tuyến!


Phương pháp cũ thú vị hơn:]

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

Hãy thử trực tuyến!


Tôi đã mong đợi một giải pháp một byte ... Mặc dù mã hóa thông minh của EOFException.

Tôi sẽ tìm một cái cho bạn.
Chọc

@A_ hóa ra nhiều ký tự đơn mang lại EOF, haha. Ít nhất tôi cũng đã có một phiên bản thời gian chạy: P
Chọc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.