-
Data: 2011-02-07 20:50:25
Temat: Re: parsowanie
Od: Wojciech Muła <w...@p...null.onet.pl.invalid> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Mon, 7 Feb 2011 21:23:26 +0100 Zbigniew Malec
<a...@i...invalid> wrote:
> Witam,
> mam takie pytanie ze swiata parserów.
> Piszę sobie taki mały parser i dla wygody podzieliłem go na dwie
> części: Tokenizer i Parser.
> W mojej składni występuje znaczek nawiasu klamrowego { i teraz,
> jeżeli jest on po dolarze $, to znaczy, że jest to początek nazwy
> zmiennej, natomiast jeżeli nie jest po dolarze, to jest po prostu
> elementem tekstu, przykładowo:
>
> abra { cos ${zmienna}
>
> Pierwszy nawias to tekst, a kolejne, to już elementy zmiennej.
>
> I teraz tak się zastanawiam (czysto koncepcyjnie), czy w tym przypadku
> tokenami powinny być:
>
> LITERAŁ: abra { coś
> ZNACZNIK ZMIENNEJ
> POCZĄTEK ZMIENNEJ
> LITERAŁ: zmienna
> KONIEC ZMIENNEJ
>
> czy raczej
> LITERAŁ: abra
> NAWIAS
> LITERAŁ: coś
> ZNACZNIK ZMIENNEJ
> NAWIAS OTWIERAJĄCY
> LITERAŁ: zmienna
> NAWIAS ZAMYKAJĄCY
>
> i dopiero w parserze to sklejać dalej.
>
> Rozwiązanie 1 ma taką zaletę, że od razu otrzymujemy sensowne tokeny
> (i jak tak patrzę na dokumentację różnych parserów do C++ np. to
> wygląda, że tak właśnie jest to robione), jednak trzeba pamiętać
> jeszcze kontekst, np. że do tej pory nie było dolara $, więc to jest
> nawias, a nie początek zmiennej, a to się może szybko przekształcić w
> bałagan nie do utrzymania. Rorwiązanie 2 ma natomiast taką wadę, że
> na parserze spoczywa obowiązek łączenia tokenów w większe tokeny (np.
> LITERAŁ: abra, NAWIAS, LITERAŁ: coś w LITERAŁ: abra { coś), jednakże
> łatwiej jest tutaj zarządzać stanem poprzez odpowiednie zchodzenie w
> dół drzewa z accept i expect.
>
> Więc jakbyście wy to zrobili?
Parser przecież i tak tworzy jakieś drzewo rozbioru gramatycznego.
Więc czy masz do sprawdzania wariant ZMIENNA/NAWIAS/LITERAŁ/NAWIAS,
czy POCZĄTEK ZM./LITERAŁ/KONIEC ZM. to raczej mała różnica, bo
ostatecznie interesuje Cię nazwa zmiennej. Bardziej kwestia, jak
bardzo ułatwi (lub skomplikuje) to inne działania.
Ale jeślibyś zdecydował się na pierwszy wariant, tzn. trochę więcej
pracy w tokenizerze, to zastanów się, czy wtedy w ogóle warto wypisywać
aż cztery tokeny dla zmiennej. Wiesz, gdzie jest początek i koniec
zmiennej, znasz jej nazwę - może wyprowadź jeden token ZMIENNA i już
nie kłopocz parser duperelami. ;-)
w.
Następne wpisy z tego wątku
- 07.02.11 22:30 Wojciech \"Spook\" Sura
- 08.02.11 23:47 Zbigniew Malec
Najnowsze wątki z tej grupy
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Jak kupić pierwsze mieszkanie? Eksperci podpowiadają