-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Zbigniew Malec <a...@i...invalid>
Newsgroups: pl.comp.programming
Subject: parsowanie
Date: Mon, 7 Feb 2011 21:23:26 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 57
Message-ID: <z5amhr1xofpk$.14z5sesbluqtt$.dlg@40tude.net>
NNTP-Posting-Host: 89-75-75-45.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1297110207 23100 89.75.75.45 (7 Feb 2011 20:23:27 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Mon, 7 Feb 2011 20:23:27 +0000 (UTC)
X-User: zbyszanna
User-Agent: 40tude_Dialog/2.0.15.1
Xref: news-archive.icm.edu.pl pl.comp.programming:188678
[ ukryj nagłówki ]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?
Ps. Chciałbym zaznaczyć, że wiem, że istnieją setki gotowych bibliotek i
tak dalej, jednak ja się pytam dla wiedzy, a nie dla praktycznego
rozwiązania.
Ps. Na internecie jest sporo na ten temat, jednakże poruszane są tylko
przykłady łatwe, w których takie dylematy nie występują :] Ale jakby gdzieś
ktoś miał linka, to też się nie obrażę.
--
Pozdrawiam
Zbyszek Malec
Następne wpisy z tego wątku
- 07.02.11 20:50 Wojciech Muła
- 07.02.11 22:30 Wojciech \"Spook\" Sura
- 08.02.11 23:47 Zbigniew Malec
Najnowsze wątki z tej grupy
- 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
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 ROG
- 2025-07-03 OZE dały Polsce więcej prądu niż elektrownie węglowe
- 2025-07-03 Dlaczego nikt nie powiadamia służb!
- 2025-07-02 Jaka ładowarka sieciowa do Iphona?
- 2025-07-02 ,,The Plot to Get RFK" (,,Spisek, by pozbyć się RFK")
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Rozkaz 16-2025: 2025-06-19 Apelacja Do Wyroku Sądu Rej. w Sprawie IVRNs 295-23
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Inżynierowie... inżynierzy...
- 2025-07-02 Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 2025-07-02 Kto potrafi sprawdzić aku BMW 48V 10Ah Li-Ion do mini hybrydy, czy sprawny ?
- 2025-07-02 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-02 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-02 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-07-02 Warszawa => Inżynier oprogramowania .Net <=