Näide1: Lihtsa programmeerimiskeele leksika kirjeldus

Lihtsas programmeerimiskeeles Pico-Algol kirjutatud programm koosneb järgmistest tüüpi lekseemidest (ingliskeelses kirjanduses kasutatakse ka nimetust token) :
Identifikaator: suvaline sümbolite jada, mis algab tähega ja milles edasi tulevad tähed või numbrid;
Arvkonstant (täisarv): numbrite jada
Eraldaja

Eraldajad on:

võtmesönad 'begin', 'end', 'if', 'then', 'else', 'do' jne (kõik võtmesõnad kirjutatakse apostroofide '...' vahel ja apostroof ei esine üheski teises lekseemis)
tühik
operatsioonide, võrdlussümbolid sulumärgid jms: + - * / = ( ) ; .

Programmis peab iga identifikaatori ja arvkonstandi järel alati olema eraldaja; eraldajaid võib üksteisele järgneda kuitahes palju. Tavaliselt on võtmesõnadest erinevad eraldajad ühesümbolilised, välja arvatud kahesümboliline omistusmärk := (: üksi ei ole eraldaja!)

Sellise struktuuriga programmeerimiskeele leksikat kirjeldab grammatika, mille terminalid on

T={ a,b,...,z,0,1,...,9,+,-,*,/,=,(,),;,.,}

mitteterminalid on
V = {PROGRAMM, ERALDAJA, IDENT, CONST, OP, TÄHT, NUM}

ja produktsioonid on
PROGRAMM (ERALDAJA | IDENT ERALDAJA | CONST ERALDAJA )*
IDENT TÄHT (TÄHT | NUM )*
CONST NUM NUM *
ERALDAJA | OP | := | ' TÄHT * '
OP + | - | * | / | = | ( | ) | ; | .
TÄHT a | b | ... | z
NUM 0 | 1 | 2 | ... | 9

Selle keele lekseemid tunnistab lõplik automaat
Siin tähistab alamautomaati

märgib alamautomaati

ja märgib alamautomaati

Selle keele leksika formaalse kirjelduse alusel on lihtne kirjutada programmi, mis sooritab keele leksilist analüüsi (skanner)


Ülesandeid:


Küsimused, probleemid:
jaak@cc.ttu.ee

Tagasi loengute sisukorra juurde