Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] yacc, bison, pccts? - generowanie prostych parserów
msulik
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 31.03.2002
Skąd: Toruń

Ostrzeżenie: (0%)
-----


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ś).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Azaghal
post
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 12.05.2002
Skąd: skoczów

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 20:13