// // MPNumber.m // MathPad // // Created by Kim Wittenburg on 09.10.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import "MPNumber.h" #import "MPTokenStream.h" #import "MPToken.h" @implementation MPNumber - (instancetype)init { self = [super init]; if (self) { } return self; } - (instancetype)initWithTokenStream:(MPTokenStream *)tokenStream { self = [self init]; if (self) { [tokenStream beginIgnoringWhitespaceTokens]; MPToken *token = tokenStream.currentToken; if (token.tokenType == MPNumberToken) { _number = [NSDecimalNumber decimalNumberWithString:token.stringValue locale:[NSLocale currentLocale]]; } else { @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Expected Number" userInfo:nil]; } [tokenStream currentTokenConsumed]; [tokenStream endIgnoringOrAcceptingWhitespaceTokens]; } return self; } - (BOOL)validate:(NSError *__autoreleasing *)error { return YES; } - (NSDecimalNumber *)evaluate { return self.number; } @end