2011-02-03 18 views
8

Sporo się rozglądałem za szybkim parserem matematycznym w C lub Objective-C Prawie wszystkie biblioteki, które widziałem są napisane w C++ i naprawdę nie chcę przechodzić przez kłopoty z uzyskaniem tego skompilować. Czy ktoś może zalecić?Co to jest szybki parser matematyczny C lub Objective-C?

+3

Spróbuj [TinyExpr] (https://github.com/codeplea/tinyexpr). Jest w jednym pliku kodu źródłowego i nagłówku C. – 131

+0

Po prostu chcę dodać ** TinyExpr **. Super łatwy w użyciu. – rileyk

Odpowiedz

6

Nie użyłem ich sam, ale możesz spróbować GCMathParser i DDMathParser.

+3

+1 dla DDMathParser! hoorah! (Chociaż jeśli idziesz na surową prędkość, prawie niemożliwe jest pokonanie GCMathParser) –

+0

@Dave: Wiedziałem o parserze Grahama, ale w jakiś sposób tęskniłem za twoim. Fascynująca struktura za pomocą bloków. Wygląda na to, że użycie NSNumber, przy częstym generowaniu autoreleased instancji, może trochę spowolnić. Wygląda na to, że do obliczeń można zastosować proste typy zmiennoprzecinkowe, które mogą być znacznie szybsze. –

+1

@Brad tak, jest wiele rzeczy, które można by zoptymalizować; moim celem było rozszerzenie i czytelność, niekoniecznie wydajność. :) Ponadto, używa on 'NSDecimal' do obliczeń (o wiele bardziej precyzyjnych niż typ zmiennoprzecinkowy). –

5

Nie będzie żadnych kłopotów z kompilacją, ObjC może pracować obok dowolnej klasy C++. Wyszukaj tutaj ObjC++, który jest naprawdę całkiem łatwy (zasadniczo zmienia nazwę z * .m na * .mm).

3

Zobacz moją bibliotekę ae (która używa Lua) i libmatheval.

+1

Um ... jest oznaczony jako "Objective-C" i "iPhone" ... –

+4

@Dave: jest również oznaczony C. – lhf

0

Istnieje Code Project, w którym ten problem został rozwiązany. Zauważ, że to jest dla C++ - przepraszam, tylko zobaczyłem, że szukasz C/Objective-C. Gdy tworzy bibliotekę, możesz napisać prosty interfejs i udostępnić go C. Istnieje naprawdę zwięzły opis tego, jak to zrobić.