Skocz do zawartości

[Delphi] Maine ONP


Force

Polecane posty

Napisałem sobie własny moduł do obliczenia wyrażeń logiczno-napisowo-liczowych w skrócie LoStrAr. Rozpoznaje on 3 typy wartości: boolean, integer oraz string, jest not case sensitive. W stringach jak chcemy mieć apostrof to tak jak w Delphi piszemy ””

 

=,,,>= działają na integerach, a =, też na stringach i boolean, mają najniższy priorytet

 

not,+,- są to operatory unarne, not do boolean-a, a +/- do integera

 

+,-,or,nor,xor,imp to wiadomo o co chodzi dodam, że nor to jest zaprzeczenie or-a, a imp to implikacja. + działa na intgerach i stringach, - na integerach, reszta na integerach i booleanach

 

*,div,mod,and,nand nand to jest zaprzeczenie and-a. Wszystko działa na integerach, a and i nand także na booleanach.

 

Operatory podałem wg priorytetu od najniższego do najwyższego. Są oczywiście nawiasy ( ), niestety nie mam krótkiego obiegu, czy jak to się zwie, chodzi o to, że jak mam and i pierwsza argument jest false to drugiego nie sprawdzam, u mnie się sprawdza.

 

Zachęcam do testowania i szukania błędów.Link

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Rozumiem, że można wprowadzać jakieś wyrażenia do obliczania, ale jakie praktyczne zastosowanie mają stringi w Twoim programie?

 

Trochę brakuje wartości bezwzględnej :) Ogólnie to nie widziałem błędów.

 

Program mógłby być bardzo użyteczny gdyby była jakaś możliwość definiowania własnych wyrażeń/funkcji... ale to już zaczynamy się zbliżać do python shell-a :D

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

no tak, Toster i jego gadanie o unit testach :D

Ja tam nie wiem jak by one miały wyglądać skoro można robić nieskończenie długie wyrażenia. Ja założyłem indukcyjnie, że skoro każdy operator działa to dołączenie do k operatorów kolejnego działania dające k+1 operatorów też działa :D

Poza tym też chce aby ktoś wpisał złe wyrażenia i zobaczył co się stanie, ja próbowałem, ale nie wszystko da się wykminić, a potem będzie się komplikowało mi wraz z rozwojem:D

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Pod postem, ale co tam :D

Otóż jest nowa wersja ONP:

Nowe ONP

Parsuje linijki np.:

Copy('Witaj',Length('3'),Length('Bob')) + Copy('Witaj',Length('Soso'),Length('Bl'))

((2+metoda1i)

 

Więcej na link (ale reklama :D)

 

Oczywiście zachęcam do testowania

Na razie wiem,że jak się źle poda parametry do metod to jest AV więc nie róbcie tego :)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Takie lepszy kalkulator ^^. Ma pozostać kalkulatorem czy planujesz coś więcej? Jak coś więcej to zaczynanie on parshera matematycznego jest moim zdaniem złym pomysłem, bo jak będziesz pisał od tej strony cały język to wszystko się pokomplikuje za bardzo, łatwo wpaść w pułapkę logiczną i trudniej będzie Ci oprogramować pozostałe elementy języka. Powinieneś raczej zacząć od zaprojektowania struktur i sporządzić jakieś założenia dla całości i dopiero wtedy rozbijać na jak największa liczbę elementów - w tym parsher matematyczny.

 

Ale tak czy siak powodzenia.

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Spoko, ja myślę ;) ale uważam, że parser matematyczny jest najtrudniejszy, bo w każdej instrukcji jest używany, w if-ie, while,repeat itp. q for dwa razy nawet. Mam więcej niż ten parser, mam nawet przekazywanie parametrów przez var-a,const-a,out-a. Jedyne co mi brakuje to stos wywywołań a raczej jak na niego coś wrzucać i potem wracać do czegoś. ogólnie nie chce też za dużo powiedzieć póki nie zrobię tego stosu i jego obsługi, więc traktuj ten post jako nieoficjalny;)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Ok :)

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...