EOFエラーを取得する最も簡単な方法[終了]


10

これは単純で、文字列を含むテキストをSTDERRに出力するだけEOFです。

入出力

入力はありません。ただし、メッセージをSTDERRに出力する必要があります。

ルール

  • これは、最も短い答えが優先されます。
  • 標準の抜け穴はありません。
  • 標準I / Oによって承認されたメソッドはすべて許可されます。
  • コードには、エラーでそのまま出力する「EOF」が含まれていない場合があります。
  • 「EOI」の出力は技術的に許可されています。これは、入力を別のファイルと見なすこともできるためです。

2
コンパイルされた言語は何をすることになっていますか?コンパイラーに「EOF」を出力させるプログラムを作成する必要がありますか?
私の代名詞はmonicareinstateで、


1
@nimi無効。

3
いくつかの回答出力として、end of inputまたはのend of file代わりにEOF、これが許可されているかどうかを明示的に明確にする必要があります。
Grimmy

3
不明確なものとして投票する投票。最初の文は、EOFエラーを発生させることを示しています。次の文は、EOFを含むstderrにテキストを出力することを示しています。I / Oセクションでは、プログラムがEOFErrorを生成したことを証明するメッセージをSTDERRに出力する必要があると述べています。3つすべてが異なることを求めています。
qwr

回答:




7

、1バイト

?

オンラインでお試しください!

入力がない場合、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

とも動作します ¿


4

JavaScript、1バイト/ 7ソリューション

次のトークンSyntaxError: Unexpected end of inputは、JSエンジンに応じて、または同様のメッセージをトリガーします。

!
(
+
-
[
{
~

または要約すると:

  • 単項演算子
  • 左括弧/ブラケット/ブレース

すべての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);
  }
}

オンラインでお試しください!


4

ターボアセンブラ、0バイト

Borland Turbo Assemblerは、0バイトのファイルをアセンブルするときに「予期しないファイルの終わり」を出力します。


4

Pythonユーザー向け。技術的には1つの文字コードを投稿するもので、SyntaxErrorたまたまとして読み取られますEOFERROR(参考までに、これと同じエラーが発生するすべての印刷可能な単一文字の例を示します。合計が表示され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)

これは印刷します:

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

raise EOFError残念ながらそれが答えと見なされるかどうかはわかりませんが、それがEOFErrorPython 3で正当な理由を提起するために考えられる最も短いコードです。


Python 3、14バイト

raise EOFError

オンラインでお試しください!

または

Python 2でエラーを暗黙的に発生させずに、追加のバイトを犠牲にしてこれを使用できます。


Python 2、15バイト

input('\u0004')

オンラインでお試しください!


1
raise EOFErrorEOFErrorソースコードに表示される正確なテキストが出力に含まれているため、無効と見なされます。

「次のように読み取る」だけの場合、なぜEOFエラーとしてカウントされないのですか?EOFである限り、EOFがどこから来たかは関係ありません。単一のブラケットの場合、ソース入力EOFです。
Dúthomhas

私は簡単な答えを避けているので、プログラムのようにEOFエラー出力をハードコーディングしますEOF

どちらの方法でも、1つのcharメソッドは技術的に実数を生成しないEOFErrorが、py2では入力メソッドが生成することを単純に述べていました
Jab


3

Japt v2.0a0、1 バイト

各スロー: SyntaxError: Unexpected end of input

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

テストする(エラーは出力フィールドの下に表示されます)

他にも、Japtに固有ではない、ArnauldのJSソリューションでカバーされている次のような多くの可能性があります。

!
&
|
~
^

3

PHP、1バイト

1

オンラインでお試しください!

次のように実行します。 php -r 1

エラー: PHP Parse error: syntax error, unexpected end of file in ...

離れてからの任意の他の文字は;#スペースや改行は、同様のエラーが発生する必要があります。したがって、PHPにはおそらくASCII characters count - 4シングルバイトのソリューションがあります。


3

R、1バイト、10ソリューション

これらの文字のいずれかが単独でトリガーされError: unexpected end of inputます。

"
'
`
(
{
+
-
!
?
~

3
あなたは~それを偶数10にすることに失敗しました:-)
Giuseppe

@Giuseppeありがとう!
rturnbull

2

Python 3、1バイト

編集して申し訳ありませんが、最初の質問を誤解しました:P。[または(または{を実行すると、予期しないEOFエラーが発生します。最初のケースでは、リスト、2番目にはタプルなどが想定されます。

[

オンラインでお試しください!


2

Perl、1バイト

(

でお試しください

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



1

Ruby、1バイト

!

オンラインでお試しください!

いずれ["!", "(", "*", "+", "-", ":", "[", "{", "~"]も環境により動作します。


追加でき["\"", "%", "'", "/", "`"]ます。ただし、正確な要件によって異なります。「ファイルの終わり」または「入力の終わり」に言及するSyntaxErrorを発生させる人もいますが、「EOF」を含むものは見つかりませんでした。
Eric Duminil、



1

Go、0バイト

すべてのGoファイルはで始まる必要がありますpackage [identifier]。エラーメッセージは次のとおりです。

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

1

Java、1バイト

e

オンラインでお試しください!


より楽しい古い方法:]

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

オンラインでお試しください!


私は1バイトのソリューションを期待していました... EOFExceptionの巧妙なエンコーディングですが。

私は屋のためにそれを見つけます。
ポケ

@A_は、多くの単一の文字がEOFを生成することがわかりました。少なくとも私は、ランタイムバージョンを持っているだけでなく:P
ポケ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.