Shakespeares programmeringsspråk

Shakespeare Programming Language ( SPL ) är ett esoteriskt programmeringsspråk designat av Jon Åslund och Karl Wiberg. Precis som programmeringsspråket Chef , är det utformat för att få program att framstå som något annat än program - i det här fallet spelar Shakespearean .

En karaktärslista i början av programmet deklarerar ett antal stackar , naturligtvis med namn som "Romeo" och "Juliet". Dessa karaktärer går i dialog med varandra där de manipulerar varandras översta värden, pushar och poppar varandra och gör I/O . Karaktärerna kan också ställa frågor till varandra som beter sig som villkorliga uttalanden . På det hela taget är programmeringsmodellen väldigt lik assemblerspråk men mycket mer utförlig.

Programmering i Shakespeare

Titel

Den första raden i ett Shakespeare-program kallas "titeln". Kompilatorn betraktar allt från den första raden till den första perioden som en kommentar.

Dramatis Personae

Detta är avsnittet där variabler deklareras. Varje variabel kan innehålla ett heltal med tecken och har följande form:

Namn, Beskrivning

Där Name är namnet på variabeln och Description ignoreras av kompilatorn. Kompilatorn känner bara igen de namn som motsvarar faktiska Shakespeare-karaktärer.

Akter och scener

En bit kod i Shakespeare är uppdelad i akter som innehåller scener där karaktärer (variabler) interagerar. Varje akt och scen är numrerad med en romersk siffra och fungerar som en GOTO -etikett. Varje kod efter kolon betraktas som en kommentar. De är skrivna i formen:

Akt I: Hamlets förolämpningar och smicker. Scen I: Förolämpningen av Romeo.

Gå in, avsluta och avsluta

Enskilda rader kod tar i allmänhet formen av ett stycke dialog som talas av en karaktär till en annan; så här tilldelas, ändras eller matas värdet på en variabel (tecken som talas till). En karaktär kan bara tilltalas som "du" eller "du". Det måste alltså vanligtvis finnas exakt två karaktärer "på scenen" när rader läses upp: en att tala och den andra att tala med. För att anropa en variabel till scenen används Enter -kommandot med en lista med ett eller flera tecken. Kommandot Exit säger åt exakt en listad karaktär att lämna scenen. Exeunt anropar mer än en karaktär att lämna, eller om inga karaktärer är listade kommer alla karaktärer att lämna scenen. Följande format används:

[Enter Juliet] [Enter Romeo and Juliet] [Exeunt Romeo] [Exeunt Romeo and Juliet] [Exeunt]

Rader

Linjer representeras som dialog som talas av en karaktär och består av minst en mening. Varje mening kan tilldela ett nytt värde till en variabel, dirigera en variabel att mata ut dess värde eller dirigera den att ta emot en input. Linjer kan också manipulera stackar eller agera som om/då eller goto-satser. En rad börjar med en karaktärs namn och ett kolon. Eftersom denna karaktär är talaren, är den andra karaktären på scenen variabeln som adresseras som "du" eller "du".

Konstanter och tilldelning av värden

Konstanter representeras av kombinationer av substantiv och adjektiv; språket känner igen en ändlig lista av var och en, och båda listorna är separerade i de som har positiv, negativ eller neutral ton, enligt vad Åslund och Hasselström uppfattar. Positiva och neutrala substantiv har värdet 1 och negativa substantiv har värdet -1. Alla adjektiv multiplicerar ett substantiv med 2, och adjektiv kan sammansättas. Possessiva pronomen ignoreras av analysatorn, medan ord som hänför sig till grundläggande aritmetik erkänns som operationer, såsom "summa", "kvot" och "kub". En mening som tilldelar ett värde till ett tecken börjar med "Du" eller "Du", kan eventuellt fortsätta med "är som [vilket som helst adjektiv] som", och ger sedan den matematiska formeln i substantiv, adjektiv, variabler och operationer för nytt värde. Exempel på sådana rader följer:

Hamlet: Du ljugande dumma faderlösa stora illaluktande halvvettig fegis! Juliet: Du är lika skurk som kvadratroten av Romeo!

De matematiska formlerna kan också använda namnen på andra karaktärer (även om dessa karaktärer inte är på scenen) för att använda det aktuella värdet av den karaktären i en beräkning, eller "dig själv" eller "dig själv" för karaktären som talas till.

Ingång och utgång

Linjer kan också kräva en variabel för att ge utdata eller ta emot input. "Open your heart" matar ut variabelns numeriska värde, medan "Speak your mind" matar ut motsvarande ASCII-tecken. "Lyssna till ditt hjärta" eller "Öppna ditt sinne" gör att variabeln får input från användaren; den förra för ett nummer och den senare för en karaktär.

Villkorliga uttalanden och gotos

Ett om/då-påstående är formulerat som en fråga som ställs av ett tecken. Orden "som [vilket som helst adjektiv] som" representerar ett test för likhet, medan "bättre" och "sämre" motsvarar större än respektive mindre än. En efterföljande rad, som börjar "om så" eller "om inte", avgör vad som händer som svar på sanningen eller osanningen i det ursprungliga tillståndet. Ett goto-uttalande börjar "Låt oss", "Vi ska" eller "Vi måste", fortsätter "återvända till" eller "fortsätt till" och ger sedan en handling eller scen. En scen kommer att tolkas som den scenen i den aktuella akten; ett goto-uttalande kan inte kalla en scen i en annan akt. Ett villkorligt uttalande att kalla en goto skulle se ut så här:

Juliet: Är jag bättre än du? Hamlet: Om så är fallet, låt oss gå vidare till scen II.

Pushing och poppar stackar

Varje variabel är en stack . En variabel kommer att ha ett heltal på sin stack om en rad säger åt tecknet att "komma ihåg" ett lämpligt värde, som "Kom ihåg mig" eller "Kom ihåg dig själv". Det översta värdet i stacken visas (dvs variabeln antar detta värde) om tecknet tillsägs att "återkalla" något; all text efter detta ord behandlas som en kommentar.

Exempelkod

Standarden "Hello, World!" program :

Do Not Adieu, en pjäs i två akter. Romeo, en ung man med ett anmärkningsvärt tålamod. Juliet, en likaledes ung kvinna av enastående nåd. Ophelia, en märklig kvinna mycket i tvist med Hamlet. Hamlet, smickraren till Andersen Insulting A/S. Akt I: Hamlets förolämpningar och smicker. Scen I: Förolämpningen av Romeo. [Skriv in Hamlet och Romeo] Hamlet: Din ljugande dumma faderlösa stora illaluktande halvvett feg! Du är lika dum som skillnaden mellan en vacker rik, modig hjälte och dig själv! Säg vad du tycker! Du är lika modig som summan av din feta, uppstoppade, missbrukade dammiga gamla ruttna torsk och en vacker lagom varm fridfull solig sommardag. Du är lika frisk som skillnaden mellan summan av den sötaste rödaste rosen och min far och dig själv! Säg vad du tycker! Du är lika feg som summan av dig själv och skillnaden mellan ett stort mäktigt stolt kungarike och en häst. Säg vad du tycker. Säg vad du tycker! [Avsluta Romeo] Scene II: The praising of Juliet. [Enter Juliet] Hamlet: Du är lika söt som summan av summan av Romeo och hans häst och hans svarta katt! Säg vad du tycker! [Exit Juliet] Scen III: The praising of Ophelia. [Enter Ophelia] Hamlet: Du är lika vacker som skillnaden mellan Romeo och torget på ett stort grönt fridfullt träd. Säg vad du tycker! Du är lika vacker som produkten av en stor lantlig stad och min fantastiska bottenlösa broderade handväska. Säg vad du tycker! Du är lika kärleksfull som produkten av den blåaste klaraste sötaste himlen och summan av en ekorre och en vit häst. Du är lika vacker som skillnaden mellan Juliet och dig själv. Säg vad du tycker! [Exeunt Ophelia and Hamlet] Akt II: Bakom Hamlets rygg. Scen I: Romeo och Julias samtal. [Skriv in Romeo och Julia] Romeo: Säg vad du tycker. Du är lika orolig som summan av dig själv och skillnaden mellan min lilla släta hamster och min näsa. Säg vad du tycker! Juliet: Säg vad du tycker! Du är lika dålig som Hamlet! Du är lika liten som skillnaden mellan kvadraten på skillnaden mellan min lilla ponny och din stora håriga hund och kuben på din ledsna lilla torsk. Säg vad du tycker! [Avsluta Romeo] Scene II: Julia och Ophelias konversation. [Ange Ophelia] Juliet: Du är lika bra som kvoten mellan Romeo och summan av ett litet pälsdjur och en igel. Säg vad du tycker! Ophelia: Du är lika äcklig som kvoten mellan Romeo och dubbelt så stor skillnad mellan en mistel och en sippande infekterad blåsa! Säg vad du tycker! [Exeunt]

Se även

Inline-referenser

Allmänna referenser

externa länkar