Twoje wyzwanie: napisz „program” dla wybranego języka, który spowoduje, że kompilator / interpreter / środowisko wykonawcze wygeneruje błąd podczas kompilacji / uruchamiania programu, który jest identyczny z kodem źródłowym programu.
Zasady:
- Twój program może być specyficzny dla konkretnej wersji lub implementacji kompilatora / interpretera / środowiska wykonawczego Twojego języka. Jeśli tak, proszę podać dane szczegółowe.
- Dozwolone są tylko standardowe opcje kompilatora / interpretera / środowiska wykonawczego. Nie można przekazać dziwnej flagi do kompilatora, aby uzyskać określony wynik.
- Program nie musi być poprawny pod względem składniowym lub semantycznym, ale mogę dać nagrodę za najlepsze zgłoszenie poprawne pod względem składniowym.
- Program nie może generować żadnych danych wyjściowych (np. Przez wywołanie funkcji drukowania lub wyjścia). Wszystkie dane wyjściowe wygenerowane podczas próby kompilacji / uruchomienia programu muszą pochodzić z kompilatora / interpretera / środowiska wykonawczego.
- Kompletne wyjście kompilatora / interpretera / środowiska wykonawczego musi być dokładnie identyczne z kodem źródłowym programu.
- Kompilator / interpreter / środowisko wykonawcze musi wygenerować co najmniej jeden komunikat o błędzie po wywołaniu z programem.
To konkurs popularności . Najbardziej kreatywna odpowiedź, określona przez entuzjastów, wygrywa. Jeśli możesz podać dobry argument za użyciem standardowej luki, możesz to zrobić.
popularity-contest
quine
error-message
nneonneo
źródło
źródło
Error: Could not find or load main class Q
Odpowiedzi:
Ed (1 bajt)
Wszystkie dotychczasowe rozwiązania są długie i brzydkie. Przypuszczam, że wynika to z natury większości komunikatów o błędach. Ale dobry komunikat o błędzie jest elegancki w swojej prostocie. W tym celu nie szukaj dalej niż ed.
Zapisz to w pliku o nazwie
edscript
i uruchom zed < edscript
lub uruchomed<<<?
. Wynik:Znak zapytania jest zapisywany do stderr, a ed zwraca 1, więc w rzeczywistości jest to komunikat o błędzie. Zastanawiam się, dlaczego ed nie jest bardzo popularny?
Fałsz (0 bajtów)
Uruchom z
false filename
. Zapisuje kod źródłowy programu (tj. Nic) do stderr i zwraca 1. Oczywiście, wywołanie fałszywego języka programowania jest wątpliwe, a quine z bajtu zerowego jest nieoryginalne, ale pomyślałem, że równie dobrze mogę go dodać. Prawdopodobnie jest jakiś tłumacz dla języka, który nie drukuje komunikatów o błędach i może zastąpić fałsz.Teraz chciałbym, żeby to był golf golfowy.
źródło
Wiersz polecenia systemu Windows
źródło
|
również z .CoffeeScript, poprawny składniowo
Jak przetestowano na ich stronie internetowej przy użyciu Chrome lub Firefox.
Możesz zastąpić
defined
wszystko, co nie jest wbudowaną zmienną, ale myślałem, że ta wersja jest fajna. Niestetyundefined is not defined
w szczególności nie działa jako quine.W CoffeeScript nie jest to nawet błąd składniowy, ponieważ się kompiluje. Jest to technicznie błąd w środowisku wykonawczym w JavaScript, aczkolwiek nudny. CoffeeScript jest prawdopodobnie kandydatem do stworzenia bardziej interesujących zapytań o błędach w czasie wykonywania, ponieważ wiele śmiesznych zdań jest poprawnymi kodami. Np. Powyższy przykład kompiluje się do
źródło
defined
jestdefined
Rozbiórkadefined
. Co ... jak ...?Undefined is not defined
(ze stolicąU
) wydaje się działać lolPyton
Spyder
Cóż, dość trywialnym rozwiązaniem dla Spyder IDE jest podniesienie
SyntaxError
.Kod i identyczne wyjście:
(Python 2.7.8 ze Spyder 2.2.5)
Terminal
Alternatywne rozwiązanie dla Pythona rozpoczęło się od zmagań wiersza poleceń z nieoczekiwanym wcięciem.
Komenda:
Kod i identyczne wyjście:
ideone.com
Na ideone.com rozwiązanie może wyglądać następująco. (Spróbuj!)
Kod i identyczne wyjście:
(Dotyczy to języka Python 2. Przykład dla języka Python 3 jest trywialny, ale z 15 wierszami „kodu” dość długim.)
Ogólne podejście:
Jak stworzyć własne rozwiązanie w 2 minuty?
Założę się, że taka procedura kończy się dość szybko w większości przypadków!
źródło
SyntaxError: invalid syntax
produkuje to samo :) :)> <> - 25 bajtów
W Fish każda zła instrukcja generuje błąd: „coś pachnie podejrzanie ...”. Ponieważ s nie jest prawidłowym poleceniem, natychmiast popełnia błąd.
źródło
something smells fishy...
, aleSomething smells fishy...
na interpretatorze internetowym. To zależy od tłumacza.Windows .EXE, 248 bajtów
Nie naprawdę. Zapisz jako
quine.txt
, a następnie zmień nazwę naquine.exe
(lub pobierz tutaj ):źródło
Biała przestrzeń
Najpierw pomyślałem, że jest to oczywiście niemożliwe. Ale w rzeczywistości jest to również trywialne. -.-
Spróbuj.
Tak, mój pierwszy program do białych znaków! ;)
źródło
kurczak
źródło
JavaScript
Ponieważ różne przeglądarki używają różnych kompilatorów JavaScript, generują różne komunikaty. Są to jednak dość trywialne rozwiązania.
V8 (Chrome 36 / Node.js)
SpiderMonkey (Firefox 31)
Chakra (Internet Explorer 11)
źródło
jsc
:Exception: SyntaxError: Unexpected identifier 'identifier'
: DCommodore 64 Basic
Po uruchomieniu na wybranym emulatorze (lub rzeczywistym Commodore 64), produkuje
W rzeczywistości jest to poprawny pod względem składni program jednowierszowy. Znak zapytania jest skrót
PRINT
, aSYNTAX
iERROR
są prawidłowymi nazwami zmiennych. Błąd występuje, ponieważ analizator składni zostaje pomylony przez podciągOR
wERROR
.źródło
Microsoft Excel
Formuła:
#DIV/0!
Komunikat o błędzie:
#DIV/0!
Aby wprowadzić formułę bez użycia znaku równości, przejdź do Opcje programu Excel / Zaawansowane / Ustawienia zgodności Lotus i włącz opcję Wprowadzanie formuły przejścia.
źródło
#REF!
Bash (32)
Zapisz jako plik o nazwie
x
:Po uruchomieniu:
źródło
Quine błędu kompilacji Java 8 (12203 bajtów)
Wygenerowano w systemie Windows + mingw z java 1.8.0_11 jdk, używając tego polecenia:
Może nie być najkrótszy, może też nie być najdłuższy, a raczej dowód koncepcji. Działa, ponieważ dane wyjściowe błędów pokazują maksymalnie 100 błędów.
źródło
ArnoldC
Wklej kod do tego kompilatora .
źródło
IT'S SHOWTIME
tak naprawdę jest na pierwszej liniiTrumpScript - Making PPCG Great Again ( TrumpScript )
Podczas próby uruchomienia tego języka na komputerze z systemem Windows dane wyjściowe są zawsze następujące:
Podczas uruchamiania tego programu:
Nawet go nie przeanalizuje, ponieważ sprawdzenie systemu operacyjnego kończy się niepowodzeniem i pojawia się komunikat o błędzie. Przykłady można podać także dla komputerów Mac, jeśli ktoś chce ich haha. Boże, od jakiegoś czasu chciałem tego użyć w PPCG, dobrze, że w końcu doszedłem.
Pełna lista błędów, które mogą być wywoływane za pomocą specyfikacji środowiskowych:
https://github.com/samshadwell/TrumpScript/blob/master/src/trumpscript/utils.py
Dodatkowa odpowiedź: ArnoldC ( ArnoldC )
ArnoldC wymaga deklaracji root
IT'S SHOWTIME
, co oznaczamain()
:Powoduje wyświetlenie jedynego komunikatu o błędzie w ArnoldC ...
Co jest właściwie ... przezabawne. Musisz uruchomić go w trybie nieokreślonym, chociaż bez śladów stosu.
źródło
Interpretator maszyny Z.
Przetestuj przeciwko temu popularnemu tłumaczowi . Jest tam także hostowana gra, która jest w większości nieszkodliwa.
źródło
Julia 0.2.0
Inny błąd składniowy został znaleziony iteracyjnie do momentu osiągnięcia stałego punktu:
źródło
Matematyka
A
.
w Mathematica oznacza przecinek dziesiętny lub funkcjęDot
. W takim przypadku.
pojawia się na końcu wyrażenia i nie można go interpretować.źródło
do
Zastosowałem metodę wielokrotnego kopiowania komunikatów o błędach do źródła. Zbiegło się w 2 cyklach. Kompilowany na OSX 10.9 z „cc -c error.c”.
Uwaga: To nie tyle odpowiedź, ile metodologia jej uzyskania. Wynik może ulec zmianie w zależności od systemu operacyjnego lub wersji używanego DW.
Dokładną metodą uzyskania wyniku jest wykonanie instrukcji
kilkakrotnie, aż wyjście przestanie się zmieniać.
źródło
cc -c error.c 2>out
a następniemv out error.c
. I z wersją cc, którą mam dzisiaj, potrzeba jeszcze kilku iteracji.cc
; w przeciwnym razie jest nieprawidłowy i musi zostać usunięty zgodnie z wytycznymi dla społeczności.C ++ (g ++)
Plik musi zostać zapisany jako
1.pas
.źródło
INTERCALL , 90 bajtów
Zawiera końcowy znak nowej linii na końcu. Zauważ, że to nie jest STDERR, ale wielu uważało to za błąd, więc opublikowałem go tutaj.
To jest „obowiązkowy nagłówek”:
źródło
GHCi (interpreter / shell Haskella)
Stosowanie:
Wpisz kod do pliku o nazwie Code i załaduj za pomocą GHCi.
Dobrym faktem jest to, że gdyby słowa były rzeczywistymi identyfikatorami, byłoby to wyrażenie prawne (o ile sprawdzałoby typ). Wynika to głównie z faktu, że
:
jest wbudowanym operatorem,.
służy do nazw kwalifikowanych do modułów, a białe znaki są używane do oznaczania aplikacji funkcji.źródło
.
nie ma tutaj operatora. To część kwalifikowanej nazwy. Dla jakiej wersji GHCi to jest?Ruby 2 w systemie Windows
Kod:
Kod został znaleziony przez testowanie i powtarzanie procesu w kółko, aż do osiągnięcia punktu stałego. Kod musi znajdować się w pliku
"error.rb"
.Próbny:
źródło
Applescript (w edytorze skryptów)
źródło
AppleScript
Zarówno
A
iidentifier
może być identyfikatory, więc AppleScript mówi nie.źródło
C (gcc)
Kompiluj z
gcc -Wfatal-errors error.c
.źródło
CJam 0.6.2
Wypróbuj online.
źródło
BBC Basic, 7 bajtów (lub 0 bajtów)
To jest poprawny 7-bajtowy wpis:
Jest to komunikat o błędzie generowany przez tłumacza, gdy nie jest on w stanie zrozumieć kodu.
Z drugiej strony nie jest to:
Jest to poprawne słowo kluczowe w BBC Basic, które ma celowo wprowadzić błąd określonego kodu do programu, ale składnia jest niepoprawna (nie podano kodu). Dlatego zwraca
Syntax error
(co z kolei zwracaMistake
po uruchomieniu).Ogólnie procedura opisana przez Falko w jego odpowiedzi prowadzi do
Mistake
BBC basic. Jest kilka wyjątków. cokolwiek, co powoduje błędyDATA not LOCAL
lubON ERROR not LOCAL
prowadzi do słynnej zera bajtów zero-bajtowych: pusty kod źródłowy tworzy pusty plik.Biorąc pod uwagę, że większość komunikatów o błędach w BBC basic składa się z małych liter (i dlatego nie są poprawnymi słowami kluczowymi), jestem prawie pewien, że każde nieprawidłowe wejście ostatecznie doprowadzi do jednej z tych możliwości.
źródło
CoffeeScript
Błąd pierwszego błędu, więc jest to dość łatwe:
Próbny
źródło
Naprzód
Wypróbuj tutaj
To było zaskakująco łatwe do wymyślenia.
źródło