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:
- egy alfabetikus karakter, melyet nulla vagy több azonosító karakter követ.
- egy numerikus karakter, melyet kettő vagy több azonosító karakter követ. Az azonosító karakterek tartalmaznak két egymás melletti alfabetikus karaktert.
- egy grafikus karakter, melyet egy vagy több azonosító karakter követ. Az azonosító karakterek között kell, hogy legyen alfabetikus karakter.
- egy "\" jel melyet függvény operátor követ.
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ó.