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 protected]) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
