^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected
Dùng thử trực tuyến!: Befunge-93 , C
Cảm ơn Randomdude999 đã lưu ý rằng tên tệp yêu cầu dấu ngoặc kép phù hợp để hoạt động.
Phải được lưu dưới tên tệp ^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, nơi \n
là một dòng mới. Do đó, TIO cho C không chạy chính xác như dự định. Đã thử nghiệm để hoạt động trên Lubfox.
Giải thích (C):
Chương trình không biên dịch được và tcc vui vẻ xuất ra tên của tệp như một phần của thông báo lỗi. Có nhiều lỗi biên dịch bạn có thể nhận được, dựa trên phần đầu của mã. ^
khi bắt đầu cung cấp cho chúng tôi một declaration expected
, ngắn và không chứa bất kỳ nhân vật có vấn đề như "
. Mặt khác, các nhà phát triển gcc và clang rất bi quan và họ đã chọn xuất ra nhiều lỗi cùng một lúc, điều này không hay lắm, vì vậy chúng tôi không sử dụng trình biên dịch của họ.
Giải thích (Befunge-93):
Befunge thuận tiện cho các quine ở chỗ mã của nó cũng có thể được sử dụng làm dữ liệu ký tự, nhờ vào "
lệnh, bật tắt chế độ chuỗi. Lúc đầu, chúng tôi thực hiện một số thao tác ngăn xếp vô dụng, sau đó đưa ra một p
lệnh (đặt lệnh) đặt ký tự NUL tại (0, 1). Sau đó, chúng tôi phản ánh con trỏ chỉ dẫn sang trái và bắt đầu đọc mọi thứ dưới dạng một chuỗi. Điều này phải được thực hiện ở bên trái, vì tính chất LIFO của ngăn xếp. Sau khi quấn quanh và tiếp cận "
nhân vật một lần nữa, chuỗi kết thúc. Lưu ý rằng ký tự NUL đã thay thế$
ký tự, tạo một dấu phân cách giữa chuỗi. Sau đó, chúng tôi đẩy 3 số lên ngăn xếp và nhảy qua NUL (vì nó không may treo trình thông dịch khi chạy như một hướng dẫn). Phần tĩnh của thông báo lỗi phải được thực hiện ở đây. Hầu hết các ký tự của nó là no-op, nhưng p
lệnh tiêu thụ ba đối số (do đó tại sao chúng ta đã đẩy 3 số, nếu không thì một phần của chuỗi sẽ được ăn ở đây) và :
& các 1
ký tự đẩy tổng cộng 4 giá trị vào ngăn xếp, mà chúng ta chống lại với một p
và một $
hướng dẫn (pop và vứt bỏ). Sau đó, một số số học được thực hiện để đẩy mã ASCII ^"\n>#001p#"
và cuối cùng một vòng lặp in ra tất cả các giá trị trên ngăn xếp dưới dạng ký tự cho đến khi tìm thấy ký tự NUL và chấm dứt.