2011-02-03 27 views
8

He mirado un poco en busca de un analizador matemático rápido en C o en Objective-C. Casi todas las bibliotecas que vi están escritas en C++, y realmente no quiero pasar por la molestia de conseguir eso. compilar. ¿Alguien puede hacer una recomendación?¿Qué es un analizador matemático rápido C o Objective-C?

+3

Pruebe [TinyExpr] (https://github.com/codeplea/tinyexpr). Está en un solo archivo de código fuente y encabezado. – 131

+0

Solo quiero hacer un segundo ** TinyExpr **. Súper fácil de usar. – rileyk

Respuesta

6

no los he utilizado yo mismo, pero usted podría intentar GCMathParser y DDMathParser.

+3

+1 para DDMathParser! hoorah! (Aunque si vas por la velocidad cruda, es casi imposible vencer a GCMathParser) –

+0

@Dave: sabía sobre el analizador de Graham, pero de alguna manera había extrañado el tuyo. Estructura fascinante con el uso de bloques. Parece que el uso de NSNumber, con la generación frecuente de instancias autorreleasadas, puede desacelerar un poco las cosas. Parece que es posible usar tipos de punto flotante simple para los cálculos, que pueden ser mucho más rápidos. –

+1

@radio Sí, hay mucho que se puede hacer para optimizarlo; mi objetivo era la extensión y la legibilidad, no necesariamente la eficiencia. :) Además, está usando 'NSDecimal' para cálculos (mucha más precisión que un tipo de punto flotante). –

5

No habrá ninguna molestia con la compilación, ObjC puede trabajar al lado de cualquier clase de C++. Buscar ObjC++ aquí, es realmente bastante fácil (su básicamente sólo el cambio de nombre de todo, desde * .m a .mm *)

3

Ver mi biblioteca ae (que utiliza Lua) y libmatheval.

+1

Um ... está etiquetado "Objective-C" y "iPhone" ... –

+4

@Dave: también está etiquetado C. – lhf

0

Hay un Code Project donde se trató este problema. Tenga en cuenta que esto es para C++: lo siento, solo vi que está buscando C/Objective-C. A medida que construye una biblioteca, puede escribir una interfaz simple y exponerla a C. Hay un explanation here realmente sucinto de cómo hacer esto.

Cuestiones relacionadas