Lekser Flashcards
(93 cards)
Czym jest pojęcie zamknięcia Kleene’a (Kleene closure) na danym zbiorze?
Wyrażane jako R* jest to konkatenacja zbioru R ze sobą, zero lub więcej razy
Zgodnie ze wzorem

Ile porównań per znak wykonuje flex dla każdego znaku z wejścia?
Jedno porównanie.
Czy w strumieniu wejścia, który można opisać regularnymi wyrażeniami warto pisać ręcznie skaner?
Nie warto, flex będzie w tym stanowczo lepszy i łątwiejszy w debugowaniu.
Czy regularne wyrażenia używane przez flex są POSIX’owe?
Tak, są to rozszerzone POSIX’owe wyrażenia regularne.
Do czego dopasowany będzie wzorzec .
Do każdego pojedynczego znaku bez znaku nowej linii.
W jaki sposób zdefiniować klasę znaków?
Umieszczając każdy ze znaków w parze []
Kiedy znaki - oraz ] zostaną potrakowane jako literały w klasie znaków?
Jeżeli będą umieszczone zaraz za klamrą otwierającą ([)
Co dopasuje klasa znakowa [A-z] ?
Małe litery , duże litery oraz znaki punktuacji
dec(‘A’) = 65, dec(‘z’) = 122
Wszystko co jest pomiędzy kodem znakiem A a z z tablicy ASCII
Czy w tablicy kodowania ASCII duże litery występują przed małymi literami?
Tak
W jaki sposób zapisać klasę znaków z pominięciem innej klasy znaków?
[a-z]{-}[vjk]
Ile razy dopasuje * (gwiazdka) poprzedzające wyrażenie?
Zero lub więcej (gwiazdka Kleene’a)
Ile razy dopasuje + (plus) poprzedzające wyrażenie?
Jeden lub więcej, tak jak AA*
Ile razy dopasuje ? (znak zapytania) poprzedzające wyrażenie?
Zero lub jeden (opcjonalne wyrażenie)
Co się traci w momencie zapisu napisu w cudzysłowach? “….”
Metaznaki inne niż sekwencje wyjścia z C zostaną utracowe i będą potraktowane bezpośrednio.
Jakie napisy zostaną dopasowane przez wzorzec a(bc|cb)?
abc lub acb
Jakiego znaku używa się do definicji “trailing context”?
Znaku /
Co dopasuje wyrażenie 0/1 w napisie 01?
Wyłącznie 0
Co dopasuje wyrażenie 0/1 w napisie 0?
Nic nie dopasuje
Co dopasuje wyrażenie 0/1 w napisie 02?
Nic nie dopasuje
Ile razy można użyć wyrażenia z trailing context w ramach jednego wzorca?
Tylko raz
Czy zwiększenie złożoności wyrażenia regularnego powoduje, że jest ono wolniejsze do rozpoznania?
Nie.
Czy użycie trailing context wpływa na wydajność skanera?
Tak, związane jest to z cofaniem dopasowanego tekstu.
Które dopasowanie zostanie wybrane przez skaner dla poniższych założeń
skanowany tekst +=
wyrażenia
* +
* =
* +=
Najdłuższe dopasowanie, czyli +=
W przypadku poniższych definicji, która reguła zostanie użyta przez skaner
skanowany tekst if
wyrażenia
* if
* else
* [a-zA-Z]+[0-9A-z]*
Reguły pierwsza i trzecia potrafią dopasować skanowany tekst, jednak wygra ta, która jest wcześniej na liście, czyli pierwsza reguła