We FreePascalu można natknąć się na zagnieżdzone komentarze. Jak analizować
taki kod?
W zależności od tego, jak implementowany jest lekser, można albo wołać
analizę komentarza rekurekcyjnie napotkawszy rozpoczęcie komentarza
w komentarzu, albo zliczać zagnieżdżenia i kończyć kiedy licznik wróci
do 0.
Natomiast w Delphi mamy jeszcze
inną ciekawą rzecz - takie słowa jak index,readczy write w definicji
property są słowami kluczowymi a poza tym mogą być użyte jako
identyfikatory - w jaki sposób ma działać analzia leksykograficzna?
Znowu szczegóły zależą od technicznych aspektów leksera i parsera.
Oraz od gramatyki Delphi.
Można albo potraktować je jako identyfikatory, a parserowi kazać
w pewnych sytuacjach reagować na to, który to jest identyfikator;
albo potraktować je jako słowa kluczowe, a tam, gdzie dopuszczalne
są identyfikatory, dopuścić również je (poza kontekstami, w których
pełnią rolę słów kluczowych); albo wreszcie komunikować informację
z parsera do leksera, jeśli zawczasu wiadomo, jaki mamy kontekst,
żeby lekser zwrócił różne rodzaje tokenów.
O ile dobrze rozumiem opisany przez Ciebie cel wyrazen regularnych
to chyba nie jest on tu wlasciwym rozwiazaniem. Zamiast tego
zastosowany powinien byc jezyk bezkontekstowy, a nie automat
skonczony. Tu zniknie problem ze zliczaniem nawiasow.
Problem identyfikatorow jest jeszcze do przemyslenia, ale raczej
powinien i na to pomoc.
Pozdrawiam.
[ciap]
w pewnych sytuacjach reagowaĹŁË na to, ktĹŁË
albo potraktowaĹŁË je jako sĹŁË Bowa kluczowe, a tam, gdzie dopuszczalne
Po co parserowi? To siĹŁË robi na etapie analizy leksykalnej, przez
uĹŁË |ycie kontekstu.