Portál AbcLinuxu, 1. května 2025 04:48
serial o schemu se mne malinko zasekl, protoze kazdy clanek o programovacich jazycich musi mit aspon jednu kapitolu o gramatikach a tak. abych pravdu rekl, formalni jazyky a takove ty srandy okolo me nikdy nebavily. do ted jsem pouzival starou dobrou kombinaci flex + bison. nicmene... nicmene, zacinaji me mirne stvat.
ne, ze by ty nastroje byly nejake ultra-slozite, ale jejich implementace je desiva. mozna je to tim, ze koncepce techto nastroju je starsi nez ma malickost, ale to api... to api!
ovladani pres globalni promenne -- odevzdat dneska neco takoveho ve skole... asi byste nedostali zapocet a se zlou se potazali. s tim souvisi hromada dalsich problemu.. thread-safety (ma to vubec cesky preklad?) - jedine rozumne reseni je big lock a proste, kdyz jedno vlakno parsuje vstup dalsi maji proste smulu.
je potreba hlidat si v jakem stavu bude analyzer a vsechno okolo po opakovanem pouziti.... dneska jsem cely den resil, proc me program nefunguje a problem byl v tom, ze v jednom specialnim pripade se prepl stav a zpatky se uz nevratil, ale vliv to melo jenom kdyz se zavalal flex vickrat po sobe... kdybych si lexer udelal v ruce (uzasny terminus technicus), trva to pulhodiny a vim co kde mam a toto se nestane...
nahradit flex rucne napsanym analyzerem neni zase takovy problem, ve svem dusledku je to jen jednoduchy konecny automat, kde sa da vystacit s par ifama a jednim cyklem. a kod je porad citelny.
napsat analyzator nejake te slozitejsi bezkontextove gramatiky uz je docela problem a kod uz neni tak hezky citelny jako vstup pro bison.
no, neramcal bych tu nad tim, kdych se nechtel zeptat, jestli tu nekdo nevi o necem lepsim. smula je, ze antlr neni pro ansi c a ta predchozi verze vypada ze uz ma taky nejlepsi leta za sebou.
Tiskni
Sdílej:
Nastrkat tu hromádku globálních proměnných do nějaké struktury a doladit API by snad neměl být moc velký problém.Takle nějak je to vyřešeno v PHP. Je tam jakési makro, které nahrazuje globální proměnné a balí je do struktury. Bison má volbu pure-parser, která zajistí, že parser je reentrantní. Jinak naprosto souhlasím s tím, že to, co tyhle vytvářejí je děs...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.