Maneira mais curta de obter um erro EOF [fechado]

10

É simples, basta enviar o texto para STDERR contendo a string EOF.

Entrada / Saída

Sua entrada será nenhuma; no entanto, você deve enviar a mensagem para STDERR.

Regras

  • Como se trata de , a resposta mais curta vence.
  • Sem brechas padrão, por favor.
  • Qualquer método aprovado pela E / S padrão é permitido.
  • Seu código pode não conter o "EOF" que você exibirá como está no seu erro.
  • A saída "EOI" é tecnicamente permitida, porque a entrada também pode ser considerada como um arquivo separado.

fonte
2
O que as linguagens compiladas devem fazer? Temos que escrever um programa que faça a saída do compilador "EOF" entre outras coisas?
meu pronome é monicareinstate
1
@nimi inválido.
3
Visto que várias respostas saem end of inputou em end of filevez de EOF, você deve esclarecer explicitamente se isso é permitido.
Grimmy
3
votando para fechar como pouco claro. A primeira frase diz para gerar um erro de EOF. A próxima frase diz para enviar o texto ao stderr contendo EOF. A seção de E / S diz que você deve enviar uma mensagem para STDERR que comprove que o programa gera um EOFError. Todos os três estão perguntando coisas diferentes.
Qr #

Respostas:

23

APL (Dyalog Unicode) 17.0, 0 bytes

O Dyalog 17.0 espera que os programas se encerrem corretamente e gerará um EOF INTERRUPT(e sairá com o código 2) se não o fizer: Experimente online!

Por outro lado, aqui está o programa mínimo que termina de forma limpa, sem causar erros (e o código 0 ao sair): Experimente online!

Adão
fonte
9

Python 3 , 1 byte

(

Experimente online!

Um colchete de abertura simples é interpretado como o início de uma tupla. Basta ter um suporte para gerar um erro de EOF. Também funciona com [e {.

Jitse
fonte
7

Barril , 1 byte

?

Experimente online!

Quando não há entrada, um EOF é gerado:

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

Também trabalha com ¿

Lyxal
fonte
4

JavaScript, 1 byte / 7 soluções

Os seguintes tokens são acionados SyntaxError: Unexpected end of inputou uma mensagem semelhante, dependendo do mecanismo JS.

!
(
+
-
[
{
~

Ou para resumir:

  • operadores unários
  • parêntese de abertura / suporte / chave

Teste exaustivo em todos os 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);
  }
}

Experimente online!

Arnauld
fonte
4

Turbo Assembler, 0 bytes

O Borland Turbo Assembler imprimirá um "final de arquivo inesperado" ao montar um arquivo de zero byte.

Peter Ferrie
fonte
4

Para os usuários python; os que postam um código de caractere, tecnicamente esse é o SyntaxErrorque passa a ser lido como um EOFERROR. (Para sua informação, aqui está um exemplo de todos os caracteres únicos imprimíveis que causariam esse mesmo erro, estou recebendo um 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)

Isso imprime:

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

Não tenho certeza se raise EOFErrorisso seria considerado uma resposta, pois infelizmente esse é o código mais curto possível para criar um legítimo EOFErrorno Python 3:


Python 3 , 14 bytes

raise EOFError

Experimente online!

OU

Sem gerar implicitamente o erro no Python 2, você pode usá-lo às custas de um byte extra:


Python 2 , 15 bytes

input('\u0004')

Experimente online!

Jab
fonte
1
raise EOFErroré considerado inválido porque a saída contém o texto exato EOFErrorque aparece no código-fonte.
Por que não conta como um erro de EOF se apenas "é lido como" um? Não importa de onde o EOF vem, desde que seja um EOF - no caso de colchetes simples, uma EOF de entrada de origem.
Dúthomhas 04/10/19
Porque estou evitando a resposta trivial: codificar permanentemente a saída de erro EOF como o programa EOF.
De qualquer maneira eu estava simplesmente declarando que o método um caractere não tecnicamente produzir uma verdadeira EOFErrormas em PY2 o método de entrada faz
Jab
3

Haskell usando abraços, 1 byte

{

A mensagem de erro contém unexpected end of input.

Experimente online!

nimi
fonte
3

Japt v2.0a0, 1 byte

Cada um joga: SyntaxError: Unexpected end of input

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

Teste (os erros são exibidos abaixo do campo de saída)

Também há várias outras possibilidades, não específicas para Japt, abordadas na solução JS de Arnauld, como:

!
&
|
~
^
Shaggy
fonte
3

PHP , 1 byte

1

Experimente online!

Execute assim: php -r 1

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

Quaisquer outros caracteres para além de ;, #, espaço e nova linha deve causar um erro semelhante. Portanto, o PHP provavelmente tem ASCII characters count - 4soluções de byte único.

Night2
fonte
3

R, 1 byte, 10 soluções

Qualquer um desses caracteres sozinho será acionado Error: unexpected end of input.

"
'
`
(
{
+
-
!
?
~
rturnbull
fonte
3
Você perdeu ~para trazê-lo para um 10 :-) mesmo
Giuseppe
@Giuseppe Thanks!
rturnbull
2

Python 3 , 1 byte

Desculpe pela edição, entendi mal a pergunta: P. Podemos fazer [ou (ou {obter erro de EOF inesperado. No primeiro caso, ele espera uma lista, no segundo uma tupla e assim por diante).

[

Experimente online!

Divy
fonte
2

Perl, 1 byte

(

Experimente com

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

T-SQL, 21 bytes

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

Bash , 1

"

Resultado

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

Experimente online!

Trauma Digital
fonte
1

Ruby , 1 byte

!

Experimente online!

Qualquer um ["!", "(", "*", "+", "-", ":", "[", "{", "~"]deles funcionará dependendo do ambiente.

histocrata
fonte
Você poderia adicionar ["\"", "%", "'", "/", "`"]. Depende da exigência exata, no entanto. Alguns irão gerar SyntaxError mencionando "final do arquivo" ou "final da entrada", mas não consegui encontrar nenhum que inclua "EOF".
22819 Eric Duminil #
1

Ruby , 1 byte

/ 

Saídas unterminated regexp meets end of file

Experimente online!

Eric Duminil
fonte
1

Perl 5 , 1 byte

"

Experimente online!

Não muito inspirado, mas é o mais curto possível no idioma.

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

Chris
fonte
1

Vá, 0 bytes

Todos os arquivos Go devem começar package [identifier]. A mensagem de erro é:

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

Java, 1 byte

e

Experimente online!


Método antigo que é mais divertido:]

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

Experimente online!

Cutucar
fonte
Eu estava esperando uma solução de um byte ... Porém, a codificação inteligente de EOFException.
Eu vou encontrar um para você.
puxão
Acontece que @A_ muitos caracteres únicos produzem um EOF, haha. Pelo menos eu tenho uma versão em tempo de execução também: P
Poke Poke