🎭 Shakespeare Playground

Exécute, visualise pas à pas, et traduis vers le langage de programmation Shakespeare

Programme Shakespeare (.spl)

Sortie

Mini-langage impératif

Variables entières, + - * / %, if/else, while, print/printc, read/readc. Voir l'onglet Documentation pour la syntaxe et les limites.

Pièce Shakespeare générée

Le langage Shakespeare, en bref

Un programme Shakespeare (SPL) ressemble à une pièce de théâtre, mais c'est en réalité un langage impératif proche de l'assembleur. Chaque personnage est une variable entière signée. Deux personnages au maximum sont « sur scène » et se parlent : quand l'un parle, ses phrases agissent sur l'autre (l'interlocuteur, « you »). « moi / je » (« me / I ») désigne le locuteur.

Structure d'une pièce

Titre de la pièce.

Romeo, une description libre.
Juliet, une autre description.

Act I: Nom de l'acte.
Scene I: Nom de la scène.

[Enter Romeo and Juliet]
Romeo: You are as good as the sum of a cat and a cat.
Romeo: Open your heart.
[Exeunt]

Valeurs & constantes « poétiques »

Un nom vaut 1, et chaque adjectif double la valeur. Les noms « gentils » ou neutres sont positifs, les noms « méchants » sont négatifs. nothing/zero valent 0.

ÉcritureValeur
a cat1
a big cat2 (1 adjectif)
a big furry cat4 (2 adjectifs)
a pig / a big pig-1 / -2 (nom négatif)
the sum of a big cat and a cat3

Opérations (dites par un personnage à l'autre)

PhraseEffet sur l'interlocuteur
You are as good as valeur.affectation
the sum of A and BA + B
the difference between A and BA − B
the product of A and BA × B
the quotient between A and BA ÷ B
the remainder of the quotient between A and BA mod B
Open your heart.affiche la valeur (nombre)
Speak your mind.affiche le caractère (code ASCII)
Listen to your heart.lit un nombre
Open your mind.lit un caractère
Remember valeur. / Recall …empile / dépile (pile par personnage)

Contrôle de flux

Une question (Am I better than you?) fixe un booléen global, puis une phrase conditionnelle décide d'un saut :

Romeo: Am I better than you? If so, let us proceed to scene III.

Comparateurs : better than (>), worse than (<), as good as (=). Les sauts se font vers des scènes (proceed to / return to).

Le mini-langage → traducteur

Le traducteur compile un petit langage impératif classique en Shakespeare valide, de façon déterministe. Il gère les entiers uniquement.

ConstructionExemple
déclarationlet x = 3
affectationx = x + 1
expression+ - * / %, parenthèses, moins unaire
sortie nombreprint x
sortie caractèreprintc 72H
lecture nombreread x
lecture caractèrereadc c
conditionwhile i <= 10 { … }
testif x % 3 == 0 { … } else { … }
commentaire# … jusqu'à la fin de la ligne

Limites (assumées)

  • Entiers signés uniquement — pas de flottants, pas de chaînes de caractères (travailler code ASCII par code ASCII).
  • Comparaisons simples a OP b — pas de and/or booléens (imbriquer les if).
  • Chaque variable/temporaire occupe un personnage : nombre total borné (~140).
  • Entrée : un nombre par ligne ; les caractères se lisent un par un.
  • print n'ajoute pas d'espace : plusieurs nombres se collent.

Astuce : transpile un exemple, envoie-le vers l'éditeur, puis lance le mode pas à pas pour voir chaque personnage prendre sa valeur.