A Dylan programozási nyelv

Lexikális elemek



Lexikális elemek

A dylan forráskód tokenek sorozata, ahol a tokenek között elválasztó karakter áll. Bizonyos (körülhatárolt) tokenek esetén az elválasztó karakter nem szükséges. A nyelv nem tesz különbséget a kis- és nagybetűk között, kivéve a karakter és sztring literáloknál. Nézzük meg sorra a nyelv lexikális elemeit:

elválasztó karakter: Elválasztó karakter a space, a tabulátor, az újsor karakter és a megjegyzés. A különböző implementációk egyéb elválasztó karaktert is megengedhetnek.

megjegyzés: lehet egysoros illetve körülhatárolt megjegyzés.

egysoros megjegyzés: Dupla "/" jel vezeti be és a sor végéig tart.
Pl: // Ez itt egy megjegyzés
körülhatárolt megjegyzés: "/*" vezeti be és "*/" zárja le. Ezek a jelsorozatok nem fordulhatnak elő egy egysoros megjegyzésben.
Pl: /* Ez itt egy

többsoros megjegyzés */
token: lehet azonosító, #-szó (hash-word), operátor, szám, karakter literál, sztring literál, szimbólum literál, és irásjel.

azonosító: Valamelyik a következő négy lehetőség közül:

alfabetikus karakter: az angol abc 26 betűje kis és nagybetűs változatban is.
numerikus karakter: a 10 számjegy egyike
grafikus karakter: A következők egyike: !, &, *, <,=, >, |, ^, $, %, @, _

azonosító karakter: alfabetikus karakter, numerikus karakter vagy grafikus karakter, vagy valamelyik a következők közül: -, +, ~, ?, /
Mivel a Dylan nyelvben ilyen sokféle karaktert használhatunk azonosítóként, előfordulhat, hogy az azonosítók és az operátorok "összekeverednek". Ezért a Dylan-ban az operátorok köré érdemes elhatároló jelet tenni.
Az implementációk egyéb karaktereket is megengedhetnek, de az ilyenek használata esetén a program nem lesz hordozható.

#-szó: A következők közül valamelyik: #t, #f, #next, #rest, #key, #all-keys
. Az elsö kettő literál konstans (false és true) a többit paraméter listákban hsználhatjuk.
operátor: Az operátorokat a következő táblázatban foglaljuk össze:

+ összeadás
- kivonás és negáció
* szorzás
/ osztás
^ hatványozás
= egyenlőség
== azonosság
< kisebb
> nagyobb
<= kisebb vagy egyenlő
>= nagyobb vagy egyenlő
~= nem egyenlő
~== nem azonos
& logikai és
| logikai vagy
:= értékadás
~ logikai negáció

A programozó újabb operátorokat nem definiálhat.

szám: A Dylan-ban a szám lehet egy decimális egész opcionális előjellel, lehet bináris egész, oktális egész, hexadecimális egész, valamint lehet két egész szám hányadosa (ezek mindegyikénél szintén lehet opcionális elöjel.) Vegül a szám lehet lebegőpontos szám is.

karakter literál: A karakter literál bármelyik nyomtatható karakter lehet. (pl. space is, de nem lehet ' vagy \). A karakter lehet un. escape szekvencia is (backslash-al kezdödik, pl.: \n az újsor karakter). A karakter literált '-párok határolják. Pl.: 'a', '\n'.

sztring literál: A sztring literál nyomtatható karakterek sorozata (pl. space is, de nem lehet " vagy \). A sztringet "-jelek határolják.

szimbólum literál: kétféle lehet, az egyik a kulcsszó, a másik a különleges sztring. A kulcsszó egy azonosító melyet ':' karakter követ. A különleges sztring ugyanolyan mint egy sztring literál, de elötte egy '#' jel áll.
írásjelek (punctuation): Az írásjeleket a következő táblázatban foglaljuk össze:

( ) zárójelek
[ ] szögletes zárójelek
{ , } kapcsos zárójelek
, vessző
. tizedespont
; pontosvessző
= alkapértelmezett érték, inicializáció
:: tipus specializáció
== singleton specializáció
=> nyíl
#( lista, pár literál
#[ vektor literál
?, ?? makró mintaváltozók
... makró ellipszis

Néhány jelsorozatot az operátorok és az írásjelek között is megtalálunk. A szövegkörnyezetből azonban mindig egyértelmű, hogy melyikről van szó.