Portál AbcLinuxu, 10. května 2025 19:43

Dotaz: Flex/Bison a Pascal string

6.6.2014 22:20 Jan R.
Flex/Bison a Pascal string
Přečteno: 535×
Odpovědět | Admin
Caute!

Mate, prosim tip, ako pomocou flex/bison/nieco ine parsovat pekny subor s tou chybou, ze je tam jeden literal, ktoreho dlzka je az v nom? Ide to vobec? (nejde o bezkontextovy jazyk - to viem)

V podstate je to Pascalovsky string - dlzka a potom zadany pocet lubovolnych znakov. Prave ta lubovolnost sposobuje, ze mi to "zly string" pri lubovolnej heurestike nutne rozbije...

Vlastny parser sa mi velmi nechce pisat - aj ked za istych okolnosti (napr. potreba upravy zdrojakov Bisona) by som to spravil.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.6.2014 15:54 Michal
Rozbalit Rozbalit vše Re: Flex/Bison a Pascal string
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udělal bych to ve flexu pomocí Start Conditions: http://flex.sourceforge.net/manual/Start-Conditions.html#Start-Conditions

Podobným způsobem se třeba zařizuje aby /* ... */ sežraly cokoli mezi nima.

Když se rozparsuje začátek - u tebe ta délka - tak se přepne na jinou startovní podmínku a někam (do globální proměnné?) se zapíše očekávaná délka. Pak pro tu startovní podmínku bude existovat jen jediné pravidlo - takové které žere jakýkoli jeden znak a dekrementuje to počítadlo. Jakmile se dostane na nulu, tak přepne na INITIAL podmínku.

V bisonu se jen ty jednotlivé znaky tvořící tenhle string spojí do nějakého opravdového stringu.

Ještě je potřeba ošetřit že pokud dojde na <<EOF>> a počítadlo je větší než nula, tak je to chyba.
7.6.2014 17:33 Jan R.
Rozbalit Rozbalit vše Re: Flex/Bison a Pascal string
Diky moc, to mna nenapadlo.
9.6.2014 03:13 xxar3s
Rozbalit Rozbalit vše Re: Flex/Bison a Pascal string
Pascal string moze mat max 255 znakov pretoze dlzka retazca sa uklada do prveho byte
9.6.2014 18:21 Sten
Rozbalit Rozbalit vše Re: Flex/Bison a Pascal string
Pascal string může mít i jinou délku, potom se délka ukládá do prvních N bajtů. Třeba Delphi používá 32 bitů na 32bitových systémech a 64 bitů na 64bitových.
10.6.2014 02:04 Jan R.
Rozbalit Rozbalit vše Re: Flex/Bison a Pascal string
To myslis ako odlisny token pre kazdy string? To je trochu divne.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.