Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa]Parser wyrażeń matematycznych
shinuexx
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 9
Dołączył: 2.02.2011
Skąd: undefined

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


Zrobiłem dla własnych potrzeb parser wyrażeń matematycznych (na razie niezbyt skomplikowanych), którym posługuję się w swoim ggbocie. Można deklarować w nim własne zmienne i operować na nich wedle potrzeb. Obsługuje także podstawowe jednoargumentowe (jak na razie) funkcje matematyczne. Są to moje początki w tworzeniu klas, więc proszę o wyrozumiałość. W razie jakiś pytań bądź błędów proszę pisać, będę w miarę możliwości odpisywał.

mexp class

Sposób użycia:
  1. // 1
  2. $t=new mexp("pi^pi");
  3. $r=$t->result();
  4. // 2
  5. $t=new mexp("a+b*c",array("a"=>10,"b"=>2,"c"=>sin(10)));
  6. $r=$t->result();
  7. // 3 blad skladniowy
  8. $t=new mexp("(34-(312+(9*(-1)$)))");
  9. $r=$t->result();

Wynik:
Kod
//1
r=36.462159607208;
//2
r=8.9119577782213;
//3
r=false;
($t->display_error())
(34-(312+(9*(-1)$)))
                |  
SYNTAX ERROR: Invalid operator '$' at position '17'


DODANO:
A za wcześnie się mnie zapisz wcisnęło i po chwili wyedytowałem:)

Ten post edytował shinuexx 30.12.2011, 19:36:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shinuexx
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 9
Dołączył: 2.02.2011
Skąd: undefined

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


Ad 1.
Wydaje mi się że mogę dodać tylko do addVar();
Ad 2.
Fakt;P Całkowicie nie zauważyłem tej funkcji:]

A co do błędów. To myślałem nad tym aby zrobić to wyjątkami ale wtedy trochę utrudniłoby to mój zamysł. Mianowicie chciałem aby można to było łatwo zaimplementować gdziekolwiek indziej. To na co zwróciłeś uwagę to błąd składni bądź wynik wyrażenia, co nie wiem czy można nazwać wyjątkiem. Nie miałem tutaj innego pomysłu jak wyświetlić położenie błędu w czytelny dla użytkownika końcowego sposób.

Factorial chciałem aby można było także używać poza obiektem. Wystarczyło by mi tutaj tylko dodanie static do deklaracji??
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(shinuexx @ 10.03.2012, 20:08:53 ) *
Ad 1.
Wydaje mi się że mogę dodać tylko do addVar();

I to miałem na myśli akurat ;d

Cytat(shinuexx @ 10.03.2012, 20:08:53 ) *
Factorial chciałem aby można było także używać poza obiektem. Wystarczyło by mi tutaj tylko dodanie static do deklaracji??

Tak, chyba że chciałbyś używać poza klasą, to wtedy zmieniasz private na public (IMG:style_emoticons/default/wink.gif)

Co do błędów:
Po prostu w klasie zrób sobie miejsce gdzie będziesz trzymał tablicę z błędami, zrób metody do generowania (wpisywania do tablicy) i zwracania błędów (np. zwykły return poprzedniej tablicy, tylko już z przeparsowanym tekstem)
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: 28.12.2025 - 09:22