Pok-3-wyk-Slajd16

Z Studia Informatyczne
Wersja z dnia 19:01, 1 wrz 2006 autorstwa BBogacki (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wyrażenia regularne w LEX’e(2)

Wyrażenia regularne w LEX’e(2)


Analizator leksykalny wygenerowany przez program LEX operuje na danych wejściowych będących znakami zapisanymi zgodnie z konwencją ASCII. Aby ułatwić przygotowanie wyrażeń regularnych, LEX umożliwia wykorzystanie tzw. klas znaków. Klasa to alternatywa znaków, którą można zapisać w uproszczony sposób korzystając z operatora zakresu od – do. Przykładowo klasa [a-z] oznacza dowolny znak z zakresu od małej litery „a” do małej litery „b”, czyli „a”, lub „b”, lub „c”, itd. aż do „z”. Analogicznie można stworzyć klasę dla cyfr. Klasa [0-9] oznacza dowolna cyfrę z zakresu od 0 do 9.

Zanegowanie klasy oznacza dowolny znak spoza klasy. [^a-z] oznacza więc dowolny znak, ale nie małą literę. Będzie to więc zarówno dowolna wielka litera, jak i cyfra czy znak specjalny.

Klasy oprócz zakresu mogą zawierać również jawnie wymienione znaki. Tak oto klasa [a-zXY] oznacza dowolną małą literę z zakresu od „a” do „z” lub wielką literę X lub wielką literę Y.

Kolejnym uproszczeniem dla przygotowujących wyrażenie regularne jest symbol specjalny . (kropka). Oznacza on dowolny znak różny od symbolu końca linii.

Symbol końca linii, znak tabulacji i inne sekwencje specjalne zapisujemy w sposób identyczny jak w języku C, czyli poprzedzając odpowiednią literę znakiem \ (backslash).


<< Poprzedni slajd | Spis treści | Następny slajd >>