Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] yacc, bison, pccts? - generowanie prostych parserów
Forum PHP.pl > Forum > PHP
msulik
Czy istnieją jakieś nakładki, moduły lub cokolwiek, co umożliwia generowanie prostych parserów w php? Mówiąc "prostych", mam na myśli na przykład parser wyrażeń arytmetycznych z czterema działaniami i nawiasami lub parser wyrażeń logicznych z operatorami logicznymi i nawiasami. A może jest jakiś inny, być może mniej wyrafinowany sposób na rozwiązanie tego zagadnienia?

O co chodzi.. Ano o to, że mam sobie wyrażenie
Kod
1*(2+3)
i zapuszczam na nim jakąś funkcję, która sprawdza, czy to wyrażenie jest poprawne w zdefiniowanej przeze mnie gramatyce (w tym przypadku jest to wyrażenie arytmetyczne), a jeśli tak, to funkcja coś tam wykonuje z tym cudem, na przykład oblicza to wyrażenie albo zamienia (kompiluje) z notacji infiksowej na notację prefiksową, czyli np. na takie coś:
Kod
pomnóż(1,dodaj(2,3))


A może ktoś się orientuje, jak to jest rozwiązane w wyszukiwarkach, że np. podaję takie cudo:
Kod
NOT (ala AND kot) OR (pies XOR chomik)
i wyszukiwarka rozpozna to tak, jak chcę.. W niektórych wyszukiwarkach jest to o tyle ciekawie rozwiązane, że jak na przykład źle rozstawię nawiasy, to i tak dostanę jakiś wynik (być może nie ten zamierzony, ale zawsze jakiś).
kurtz
Cytat
Czy istnieją jakieś nakładki, moduły lub cokolwiek, co umożliwia generowanie prostych parserów w php? Mówiąc "prostych", mam na myśli na przykład parser wyrażeń arytmetycznych z czterema działaniami i nawiasami lub parser wyrażeń logicznych z operatorami logicznymi i nawiasami. A może jest jakiś inny, być może mniej wyrafinowany sposób na rozwiązanie tego zagadnienia?
O co chodzi.. Ano o to, że mam sobie wyrażenie
Kod
1*(2+3)
i zapuszczam na nim jakąś funkcję, która sprawdza, czy to wyrażenie jest poprawne w zdefiniowanej przeze mnie gramatyce (w tym przypadku jest to wyrażenie arytmetyczne), a jeśli tak, to funkcja coś tam wykonuje z tym cudem, na przykład oblicza to wyrażenie albo zamienia (kompiluje) z notacji infiksowej na notację prefiksową, czyli np. na takie coś:
Kod
pomnóż(1,dodaj(2,3))
hmm poki co nie zetknalem sie z gotowym mehcniazemm niestety. wyglada na to ze czeka ciebie skontruowanie prostego automatu skonczego - jesli gramatyka nie wychodzi poza podstawowe dzialnia to nie ma specjalnie problemu, ba pregami to zalatwisz. ;)
Cytat
A może ktoś się orientuje, jak to jest rozwiązane w wyszukiwarkach, że np. podaję takie cudo:
Kod
NOT (ala AND kot) OR (pies XOR chomik)
i wyszukiwarka rozpozna to tak, jak chcę.. W niektórych wyszukiwarkach jest to o tyle ciekawie rozwiązane, że jak na przykład źle rozstawię nawiasy, to i tak dostanę jakiś wynik (być może nie ten zamierzony, ale zawsze jakiś).
hm tutaj znow podstawowy lekser by sie przydal. gotowca nie widzialem (ale nie dalbym siostrze uciac reki ze sie nie da ;)
Azaghal
hej

ja pisalem lexer i parser do wyrazen arytmetycznych . Zbudowanie tych automatow nie jest trudne....

jezeli chcesz to podesle moje programy w Delphi, ktore mozna przerobic na php. Sluze pomoca azaghal@box43.pl
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.