A Shakespeare programozási nyelv

Egy összetettebb példa

Most mélyedjünk el a nyelv rejtemeibe egy komplikáltabb példán keresztül: számítsunk prímszámokat! A 2. példában megfogalmazott program kér egy számot a felhasználótól, majd kiír minden nála kisebb és esetleg egy vele egyenlő prímszámot.

Három olyan nyelvi elem van ebben a példában, amely az előzőben még nem szerepelt: beolvasás, ugrás (GOTO), és elágazás.

Beolvasás

A beolvasó utasítások hasonlóan használandók a kiíró utasításokhoz. Egy szám beolvasásához, mint ahogy ebben a pédában is, a következő mondat használható: "Listen to your heart." (Hallgass a szívedre.) Egy karakter beolvasásához pedig az "Open your mind." (Nyisd meg a tudatod.) mondat használandó. A beolvasott értéket a hallgató szereplő veszi fel.

A Vezérlési szerkezet: Goto

Egy olyan mondat, mint "Let us return to scene III" (Térjünk vissza a III. jelenethez) egyszerűen csak azt jelenti, hogy "goto scene III". A "let us" helyett a "we shall" (mehetünk) vagy a "we must" (mennünk kell), és a "return to" helyett a "proceed to" (ugorjunk előre) is használható. A konkrét számmal hivatkozott jelenet az abban az adott felvonásban ilyen sorszámú jelenetet jelenti, ahonnan az ugrást kezdeményezzük. Másik felvonásban szereplő jelenetre nincs lehetőség hivatkozni, egy felvonáson belül kell megoldani az ugrásokat.

Feltételes elágazások

A feltételes utasítások két egyszerű részből állnak, mint ahogy a következő kódrészlet is mutatja:

Juliet:
 Am I better than you?

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

Először valaki feltesz egy kérdést. Ennek egyfajta érték-összehasonlításnak kell lennie, amely lehet igaz vagy hamis.

Valamikor ezután egy feltételes utasítás következik, ami úgy épül fel, hogy szerepel az elején egy "if so" (ha igen), vagy egy "if not" (ha nem) kifejezés, egy vessző, majd egy bármilyen mondat. Ez a mondat kizárólag akkor hajtódik végre, ha a korábban kiértékelt feltétel igaz volt, vagy az utóbbi ("if not") esetben hamis.

Ez pontosan úgy működik, mint a feltételes ugrás vagy egyéb feltételhez kötött utasítások bármelyik assembly dialektusban.

Összehasonlítások

Az összehasonlítások a szokott módon épülnek fel: az "is X as good as Y" (X olyan jó-e, mint Y) kifejezés egyenlőséget vizsgál, ahol X és Y tetszőleges egész számok. A "good" kifejezés bármilyen melléknévvel helyettesíthető. Az "is X better than Y" (X jobb-e, mint Y) kifejezés azt vizsgálja, hogy igaz-e az, hogy X > Y. Ha az X < Y igazságát akarjuk megállapítani, akkor negatív összehasonlításként használjuk a "worse" (rosszabb) szót.

A kiértékelés tagadásához használjuk a "not as good as" (nincs olyan jó, mint) vagy a "not better than" (nem jobb, mint) kifejezéseket.