Shakespeare Programming Language - Shakespeare Programming Language

Shakespeare Programming Language ( SPL ) je esoterický programovací jazyk navržený Jon Åslund a Karl Hasselström. Stejně jako programovací jazyk Chef je navržen tak, aby programy vypadaly jako něco jiného než programy - v tomto případě hraje Shakespearean .

Charakter seznam na začátku programu deklaruje několik stohů , přirozeně s názvy jako „Romeo“ a „Julie“. Tyto znaky vstoupit do dialogu mezi sebou navzájem, ve kterém manipulovat navzájem vrchní hodnoty, tlačit a pop sebe a udělat I / O . Postavy si také mohou navzájem klást otázky, které se chovají jako podmíněné výroky . Celkově je programovací model velmi podobný montážnímu jazyku, ale je mnohem podrobnější.

Programování v Shakespeare

Titul

První řádek v Shakespearově programu se nazývá 'název'. Kompilátor považuje cokoli od prvního řádku po první období za komentář.

Dramatis Personae

Toto je část, kde jsou deklarovány proměnné. Každá proměnná může obsahovat celočíselnou hodnotu se znaménkem a má následující formu:

Name, Description

Kde Nameje název proměnné a Descriptionkompilátor jej ignoruje. Kompilátor rozpozná pouze ta jména, která odpovídají skutečným shakespearovským znakům.

Akty a scény

Kus kódu v Shakespeare je rozdělen do Actskteré obsahují Scenes, ve kterém znaky (proměnné) působí. Každý Acta Sceneje očíslován římskou číslicí a slouží jako GOTOštítek. Jakýkoli kód za dvojtečkou je považován za komentář. Jsou psány ve formě:

Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.

Vstup, výstup a útěk

Jednotlivé řádky kódu mají obecně formu dialogu, který mluví jedna postava s druhou; takto se přiřazuje, mění nebo vytváří hodnota proměnné (znaku, kterým se mluví). Postavu lze oslovit pouze jako „ty“ nebo „ty“. Kdykoli se mluví, tak obvykle musí být „na jevišti“ přesně dvě postavy: jedna k mluvení a druhá k mluvení. K volání proměnné do fáze Enterse používá příkaz se seznamem jednoho nebo více znaků. ExitPříkaz říká přesně jeden znak uvedena opustit jeviště. Exeuntvolá více než jeden znak k opuštění, nebo v případě, že nejsou uvedeny žádné znaky, všechny znaky opustí jeviště. Používá se následující formát:

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

Čáry

Řádky jsou reprezentovány jako dialog mluvený postavou a skládají se alespoň z jedné věty. Každá věta může proměnné přiřadit novou hodnotu, směrovat proměnnou k výstupu její hodnoty nebo ji nasměrovat k přijetí vstupu. Řádky mohou také manipulovat se zásobníky nebo fungovat jako příkazy if/then nebo goto. Řádek začíná jménem postavy a dvojtečkou. Vzhledem k tomu, že tato postava je mluvčím, druhá postava na jevišti je proměnná, která je oslovována „ty“ nebo „ty“.

Konstanty a přiřazení hodnot

Konstanty jsou reprezentovány kombinacemi podstatných jmen a přídavných jmen; jazyk rozpoznává konečný seznam každého a oba seznamy jsou rozděleny na ty, které mají pozitivní, negativní nebo neutrální tón, jak je vnímají Åslund a Hasselström. Pozitivní a neutrální podstatná jména mají hodnotu 1 a záporná podstatná jména mají hodnotu -1. Jakékoli adjektivum znásobuje podstatné jméno o 2 a přídavná jména lze skládat. Analyzátor ignoruje přivlastňovací zájmena, zatímco slova týkající se základní aritmetiky jsou považována za operace, jako například „součet“, „kvocient“ a „krychle“. Věta, která přiřazuje hodnotu znaku, začíná na „Ty“ nebo „Ty“, může volitelně pokračovat „jsou jako [libovolné přídavné jméno] jako“ a poté uvádí matematický vzorec v podstatných jménech, přídavných jménech, proměnných a operacích pro nová hodnota. Následují příklady takovýchto řádků:

Hamlet:
 You lying stupid fatherless big smelly half-witted coward!

Juliet:
 You are as villainous as the square root of Romeo!

Matematické vzorce mohou také použít jména jiných postav (i když tyto znaky nejsou na jevišti) k využití aktuální hodnoty této postavy ve výpočtu nebo „sebe“ nebo „sebe“ pro postavu, se kterou se mluví.

Vstup a výstup

Řádky mohou také volat proměnnou pro výstup nebo příjem vstupu. „Open your heart“ vydá číselnou hodnotu proměnné, zatímco „Speak your mind“ zobrazí odpovídající znak ASCII. „Naslouchejte svému srdci“ nebo „Otevřete svou mysl“ způsobí, že proměnná obdrží vstup od uživatele; první pro číslo a druhý pro postavu.

Podmíněné prohlášení a fotografie

Příkaz if/then je formulován jako otázka položená postavou. Slova „jako [libovolné přídavné jméno] jako“ představují test rovnosti, zatímco „lepší“ a „horší“ odpovídají větším než a menším než. Následující řádek, začínající „pokud ano“ nebo „pokud ne“, určuje, co se stane v reakci na pravdivost nebo nepravdu původního stavu. Okamžité prohlášení začíná slovy „Pojďme“, „Musíme“ nebo „Musíme“, pokračuje „návratem“ nebo „pokračováním“ a poté vydá akt nebo scénu. Scéna bude analyzována jako scéna v aktuálním aktu; goto prohlášení nemůže volat scénu v jiném aktu. Podmíněný příkaz k volání goto by vypadal takto:

Juliet:
 Am I better than you?

Hamlet:
 If so, let us proceed to scene III.

Tlačení a praskání hromádek

Každá proměnná je hromádka . Proměnná bude mít do zásobníku vloženo celé číslo, pokud řádek řekne znaku „zapamatovat si“ příslušnou hodnotu, například „Zapamatovat si mě“ nebo „Zapamatovat si sebe“. Nejvyšší hodnota v zásobníku je vyskakována (tj. Proměnná předpokládá tuto hodnotu), pokud je znaku řečeno, aby si cokoli „vybavilo“; veškerý text za tímto slovem je považován za komentář.

Příklad kódu

Standardní „Hello, World!“ program :

Do Not Adieu, a play in two acts.

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                    Act I: Hamlet's insults and flattery.

                    Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
 You lying stupid fatherless big smelly half-witted coward!
 You are as stupid as the difference between a handsome rich brave
 hero and thyself! Speak your mind!

 You are as brave as the sum of your fat little stuffed misused dusty
 old rotten codpiece and a beautiful fair warm peaceful sunny summer's
 day. You are as healthy as the difference between the sum of the
 sweetest reddest rose and my father and yourself! Speak your mind!

 You are as cowardly as the sum of yourself and the difference
 between a big mighty proud kingdom and a horse. Speak your mind.

 Speak your mind!

[Exit Romeo]

                    Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
 Thou art as sweet as the sum of the sum of Romeo and his horse and his
 black cat! Speak thy mind!

[Exit Juliet]

                    Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:

 Thou art as beautiful as the difference between Romeo and the square
 of a huge green peaceful tree. Speak thy mind!

 Thou art as lovely as the product of a large rural town and my amazing
 bottomless embroidered purse. Speak thy mind!

 Thou art as loving as the product of the bluest clearest sweetest sky
 and the sum of a squirrel and a white horse. Thou art as beautiful as
 the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]


                    Act II: Behind Hamlet's back.

                    Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
 Speak your mind. You are as worried as the sum of yourself and the
 difference between my small smooth hamster and my nose. Speak your
 mind!

Juliet:
 Speak YOUR mind! You are as bad as Hamlet! You are as small as the
 difference between the square of the difference between my little pony
 and your big hairy hound and the cube of your sorry little
 codpiece. Speak your mind!

[Exit Romeo]

                    Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
 Thou art as good as the quotient between Romeo and the sum of a small
 furry animal and a leech. Speak your mind!

Ophelia:
 Thou art as disgusting as the quotient between Romeo and twice the
 difference between a mistletoe and an oozing infected blister! Speak
 your mind!

[Exeunt]

Viz také

Reference

Vložené odkazy

Obecné reference

externí odkazy