Re: [ANN] DDMathParser
Re: [ANN] DDMathParser
- Subject: Re: [ANN] DDMathParser
- From: Graham Cox <email@hidden>
- Date: Tue, 23 Nov 2010 15:45:23 +1100
Ah, nice job! It's about time my crusty old code was updated but I'm just too busy...
--Graham
On 23/11/2010, at 3:41 PM, Dave DeLong wrote:
> Hi everyone,
>
> I thought it'd be fun to write a mathematical expression evaluator, a la Graham Cox's GCMathParser, but one that was extensible. So I dusted off my parsing skills and wrote DDMathParser: https://github.com/davedelong/DDMathParser
>
> It's an NSString => NSNumber expression evaluator, and its major feature is that you can define custom mathematical functions. So if you really need to have a multiplyBy42() function, then you can quickly write one, register it, and use it.
>
> You can use it very simply:
>
> NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); //logs "3"
>
> Or very complexly:
>
> DDMathParser * parser = [DDMathParser mathParserWithString:@"2 ** 3 ** 2"];
> [parser setPowerAssociativity:DDMathParserAssociativityRight];
> DDExpression * e = [parser parsedExpression];
> NSLog(@"%@", [e evaluateWithSubstitutions:nil evaluator:nil]); //logs "512"
>
> It supports pretty much all of the functions defined by NSExpression, plus many more (primarily trig functions: sin(), cos(), atanh(), etc). And like I mentioned above, you can create new functions as well.
>
> It supports variables of the same format used by NSPredicate/NSExpression ("$variable") for substituting in values during evaluation.
>
> It has rudimentary support for simplifying expressions, and I'm currently working on support for translating an arbitrary "DDExpression" into an NSExpression and still having it work properly (even with custom functions).
>
> The source code is available on my github page, and I'd appreciate any comments or feedback you might have.
>
> https://github.com/davedelong/DDMathParser
>
> Cheers,
>
> Dave DeLong
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden