A Stratego termátíró rendszer

Nyelvi elemek

Termek

A Stratego műveleteit termeken végzi; ezeket az Annotated Term Format (ATerm) szerint jelölhetjük. Egy term a következő szabályok rekurzív alkalmazásával keletkezik:

Továbbá kötött változó felhasználható (rész)termként term konstrukciója során.

Minták

A nyelv alapvető művelete a mintaillesztés. Mintát a term-alkotáshoz hasonló módon kapunk. Minta az előzőekben megadott szabályok rekurzív alkalmazásával történik (cseréljük le a "term" szavakat "mintára"), továbbá:

Változók

Termek konstrukciójához felhasználhatunk változókat is. A változónevek tetszőleges angol betűkkel kezdődnek és angol betűk, számok, _, ', - jelek alkothatják (a lista lehet, hogy nem teljes, mivel a dokumentációban nincsenek a jelek felsorolva). Például: alma, Kor, a', b-c-d

Hatókörök

A változók csak egy adott hatókörben érvényesek. Változó alapértelmezett hatóköre a változó feletti első elnevezett stratégia. Egy hatókörben egy változóhoz legfeljebb egy értéket rendelhetünk. Ha egy változó már kötött és egy a kötött értéktől különböző értéket kívánunk hozzá kötni, a kötés sikertelen.

Ha változókat csak egy helyi hatáskörben kívánunk használni, úgy al-hatáskört hozhatunk létre. A { és } jelek közötti kódrészleten belül kötötté váló változók a blokkon kívül szabadok.

További jelek

A műveletek zárójelezhetők; a zárójelpár a megszokott ( ).

A nyelv kulcsszavai a következők (a lista lehet, hogy nem teljes, mivel a dokumentációban nincsenek a kulcsszavak szisztematikusan felsorolva): constructors, else, end, exports, fail, if, imports, module, not, rules, signature, strategies, then, where, with. A kulcsszavak nem fogalaltak; azaz - ha az kétértelműséget nem okoz - e szavak használhatóak azonosítóként.

A nyelv blokkszerkezetűnek tekinthető, de a blokkok vége - ahol az egyértelmű - nem jelzett semmilyen kulcsszóval. A fehér szóköz jelentéktelen.

Speciális operátorok: :, ->, <+, <, +, =>.

Megjegyzések

A C++-hoz hasonló a megjegyzések szintaxisa: