Shekspir dasturlash tili - Shakespeare Programming Language

The Shekspir dasturlash tili (SPL) an ezoterik dasturlash tili Jon Aslund va Karl Xasselstrom tomonidan ishlab chiqilgan.[1] Chef dasturlash tili singari, u dasturlar dasturlardan boshqa narsa bo'lib ko'rinishi uchun mo'ljallangan - bu holda, Shekspir o'ynaydi.

A belgi dastur boshidagi ro'yxat bir qatorni e'lon qiladi vayronalar, tabiiy ravishda "Romeo" va "Juliet" kabi nomlar bilan. Ushbu belgilar bir-birlari bilan dialogga kirishadilar, unda ular bir-birlarining eng yuqori qiymatlarini boshqaradilar, bir-birlarini itaradilar va pop qiladilar va bajaradilar. I / O. Belgilar bir-birlariga o'zini tutadigan savollarni berishlari mumkin shartli gaplar. Umuman olganda, dasturlash modeli juda o'xshash assambleya tili lekin juda ham aniq.

Shekspirda dasturlash

Sarlavha

Shekspir dasturidagi birinchi satr "sarlavha" deb nomlanadi. Tuzuvchi birinchi qatordan birinchi davrgacha bo'lgan har qanday narsani sharh deb hisoblaydi.

Dramatis Personae

Bu o'zgaruvchilar e'lon qilingan bo'lim. Har bir o'zgaruvchi imzolangan tamsayı qiymatiga ega bo'lishi mumkin va quyidagi shaklga ega:

Ism, tavsif

Qaerda Ism o'zgaruvchining nomi va Tavsif kompilyator tomonidan e'tiborga olinmaydi. Tuzuvchi faqat haqiqiy Shekspir belgilariga mos keladigan nomlarni taniydi.[1]

Aktyorlar va sahnalar

Shekspirdagi kodning bir qismi buzilgan Havoriylar o'z ichiga olgan Sahnalar unda belgilar (o'zgaruvchilar) o'zaro ta'sir qiladi. Har biri Harakat va Sahna rim raqami bilan raqamlangan va a vazifasini bajaradi GOTO yorliq. Yo'g'on ichakdan keyingi har qanday kod izoh deb hisoblanadi. Ular quyidagi shaklda yozilgan:

I harakat: Hamletning haqoratlari va xushomadgo'ylik I sahna: Romeoga haqorat.

Kirish, chiqish va chiqish

Shaxsiy kod satrlari odatda bir belgi boshqasiga aytadigan dialog shaklida bo'ladi; o'zgaruvchining qiymati (aytilgan belgi) shu tarzda belgilanadi, o'zgartiriladi yoki chiqariladi. Belgiga faqat "sen" yoki "sen" deb murojaat qilish mumkin. Shunday qilib, satrlar aytilganida, odatda "sahnada" aniq ikkita belgi bo'lishi kerak: biri gapirish uchun, boshqasi bilan gaplashish uchun.[1] O'zgaruvchini sahnaga chaqirish uchun Kirish buyrug'i bir yoki bir nechta belgilar ro'yxati bilan ishlatiladi. The Chiqish buyrug'i ro'yxatdan o'tgan bitta belgini sahnani tark etishini aytadi. Exeunt bir nechta belgilarni tark etishga chaqiradi yoki hech qanday belgilar kelmagan taqdirda barcha belgilar sahnani tark etadi.[1] Quyidagi format ishlatiladi:

[Julietga kirish] [Romeo va Julietaga kirish] [Romeodan chiqish] [Romeo va Julietaga chiqish] [Exeunt]

Chiziqlar

Chiziqlar belgi bilan aytilgan dialog sifatida ifodalanadi va kamida bitta gapdan iborat. Har bir jumla o'zgaruvchiga yangi qiymat berishi, o'zgaruvchini uning qiymatini chiqarishi uchun yo'naltirishi yoki kirishni qabul qilishi uchun yo'naltirishi mumkin. Shuningdek, chiziqlar stacklarni boshqarishi yoki go / then yoki goto so'zlari kabi harakat qilishi mumkin. Satr belgi nomi va ikki nuqta bilan boshlanadi. Ushbu belgi ma'ruzachi bo'lgani uchun, sahnadagi boshqa belgi "siz" yoki "sen" deb nomlangan o'zgaruvchidir.

Konstantalar va qiymatlarni belgilash

Doimiy turkumlar ot va sifat birikmalari bilan ifodalanadi; til har birining cheklangan ro'yxatini taniydi va ikkala ro'yxat ham Tslund va Xasselstrom tomonidan qabul qilingan ijobiy, salbiy yoki neytral ohangga ega bo'lganlarga bo'linadi. Ijobiy va neytral ismlar 1, salbiy ismlar -1 ga teng. Har qanday sifat otni 2 ga ko'paytiradi va sifatlar qo'shilishi mumkin.[1] Egalik olmoshlari tahlilchi tomonidan e'tiborga olinmaydi, asosiy arifmetikaga tegishli so'zlar "yig'indisi", "keltirilgan" va "kub" kabi operatsiyalar sifatida tan olinadi. Belgiga qiymat beradigan jumla "Siz" yoki "Sen" bilan boshlanadi, ixtiyoriy ravishda "kabi [har qanday sifat] kabi" bilan davom etishi mumkin va keyin matematik formulani otlar, sifatlar, o'zgaruvchilar va amallar yangi qiymat. Bunday satrlarning misollari quyidagicha:[1]

Hamlet: Siz yolg'on gapiradigan ahmoq otasiz, katta hidli yarim aqlli qo'rqoq! Djuletta: Siz Romeo kvadrat ildiziga o'xshab yovuz odamsiz!

Matematik formulalar hisoblashda ushbu belgining joriy qiymatidan foydalanish uchun yoki boshqa belgilar nomlari (hatto bu belgilar sahnada bo'lmasa ham) yoki "o'zingiz" yoki "o'zingiz" deb ishlatilishi mumkin.

Kirish va chiqish

Chiziqlar natijani berish yoki kirishni qabul qilish uchun o'zgaruvchini chaqirishi mumkin. "Yuragingizni oching" o'zgaruvchining raqamli qiymatini chiqaradi, "Fikringizni ayting" mos keladigan ASCII belgisini chiqaradi. "Yuragingizni tinglang" yoki "Fikringizni oching" o'zgaruvchiga foydalanuvchi tomonidan ma'lumot kiritishiga sabab bo'ladi; birinchisi raqam uchun, ikkinchisi belgi uchun.[1]

Shartli bayonotlar va gotos

If / then ifodasi belgi tomonidan berilgan savol sifatida ifodalanadi. "Har qanday sifat kabi" so'zlari tenglikni sinashni anglatadi, "yaxshiroq" va "yomon" mos ravishda kattaroq va kichikdan mos keladi. Keyingi satr "agar shunday bo'lsa" yoki "agar bo'lmasa" dan boshlanib, asl holatning haqiqati yoki yolg'oniga javoban nima bo'lishini aniqlaydi. Goto bayonoti "Kelinglar", "Biz qilishimiz kerak" yoki "Biz kerak" deb boshlanadi, "qaytish" yoki "davom etish" davom etadi va keyin akt yoki sahnani beradi. Hozirgi aktdagi ushbu sahna kabi sahna tahlil qilinadi; goto bayonoti boshqa harakatdagi sahnani chaqira olmaydi.[1] Go'toni chaqirish uchun shartli bayonot quyidagicha ko'rinadi:[1]

Juliet: Men sendan ustunmanmi? Hamlet: Agar shunday bo'lsa, keling, III sahnaga o'tamiz.

Yig'ishlarni surish va ochish

Har bir o'zgaruvchi a suyakka. Agar chiziq belgiga "meni esla" yoki "o'zingni esla" kabi tegishli qiymatni "eslab qolish" kerakligini aytsa, o'zgaruvchining stekiga butun son bosiladi. Agar belgiga biron narsani "esga olish" buyurilgan bo'lsa, stekdagi eng yuqori qiymat ochiladi (ya'ni, o'zgaruvchi bu qiymatni qabul qiladi); ushbu so'zdan keyingi barcha matnlar sharh sifatida ko'rib chiqiladi.[1]

Namuna kodi

Bu standart "Salom Dunyo "dasturini (foydalanuvchiga" Salom Dunyo! "chiqaradigan yoki ko'rsatadigan) SPL-da.

Dunyo bo'ylab noma'lum salom dasturi. Romeo, ajoyib sabr-bardoshli yigit. Juliet, xuddi shu kabi ajoyib inoyatga ega bo'lgan yosh ayol, Afeliya, Hamlet bilan juda ko'p tortishuvlarga tushgan ajoyib ayol. Hamlet, Andersenni haqorat qilgan A / S-ning xushomadgo'yi. I akt: Hamletning haqoratlari va xushomadgo'yliklari. I sahna: Romeoga haqorat. [Hamlet va Romeoga kiring] Hamlet: Siz yolg'onchi ahmoq otasiz, katta hidli yarim aqlli qo'rqoq! Siz chiroyli boy jasur qahramon va o'zingiz o'rtasidagi farq kabi ahmoqsiz! Fikringizni ayting! Siz ozgina yog 'to'ldirilgan noto'g'ri ishlatilgan changli eski chirigan kodi va yozning go'zal, iliq va osoyishta kunining yig'indisi kabi jasursiz. Siz eng yangi qizil atirgul bilan otam va o'zingiz o'rtasidagi farq kabi sog'lomsiz! Fikringizni ayting! Siz o'zingizning jami va katta qudratli mag'rur shohlik va ot o'rtasidagi farq kabi qo'rqoqsiz. Fikringizni ayting. O'zingizning fikringizni ayting! [Romeo-dan chiqish] II sahna: Julettani maqtash. [Julietga kiring] Hamlet: Siz Romeo va uning oti va qora mushugining yig'indisi kabi shirinsiz! Fikrlaringizni ayting! [Julietdan chiqish] III sahna: Ofeliyani maqtash. [Ofeliyaga kiring] Hamlet: Siz katta qishloq shaharchasi va mening ajoyib tubsiz kashta tikilgan sumkam kabi juda yoqimlisiz. Fikringizni ayting! Siz eng moviy tiniq osmon va sincap va oq otning yig'indisi kabi mehrlisiz. Siz Juliet bilan o'zingiz o'rtasidagi farq kabi go'zalsiz. O'z fikringizni ayting! [Exeunt Ophelia and Hamlet] II akt: Hamletning orqasida. I sahna: Romeo va Julietaning suhbati. [Romeo va Julietaga kiring] Romeo: O'z fikringizni ayting. Siz o'zingizning yig'indingiz kabi va mening mayda silliq hamsterim bilan burnim o'rtasidagi farq kabi xavotirdasiz. Fikringizni ayting! Juletta: Fikringizni ayting! Siz Hamlet singari yomonsiz! Siz mening kichkina ponyim bilan katta tukli itingiz va afsuslangan kichkina codpiece kubingiz o'rtasidagi yig'indining kvadrati orasidagi farqga qadar siz juda kichiksiz. Fikringizni ayting! [Romeo-dan chiqish] II sahna: Juliet va Ofeliyaning suhbati. [Ofeliyaga kiring] Juletta: Siz Romeo bilan kichkina tukli hayvon va sulukning yig'indisi bilan tengsiz. Fikringizni ayting! Ofeliya: Siz Romeo o'rtasidagi jirkanch odamsiz va ökseotu bilan yuqadigan pufakchaning orasidagi farqdan ikki baravar ko'psiz! Fikringizni ayting! [Exeunt]

Shuningdek qarang

Adabiyotlar

Ichki havolalar

  1. ^ a b v d e f g h men j "Shekspirning dasturlash tili".

Umumiy ma'lumotnomalar

Tashqi havolalar