// // MPExpressionTreeElement.h // MathPad // // Created by Kim Wittenburg on 09.10.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import #import "MPTokenStream.h" #import "MPParseError.h" #import "MPTokenStream.h" #define MPTokenStreamRecordCurrentLocation(tokenStream) NSUInteger __tokenStreamStart = tokenStream.currentToken.range.location #define MPTokenStreamRecordedRange(tokenStream) NSMakeRange(__tokenStreamStart, tokenStream.currentToken.range.location - __tokenStreamStart) @protocol MPExpressionTreeElement @required - (instancetype)init; - (instancetype)initWithTokenStream:(MPTokenStream *)tokenStream; - (NSRange)range; - (BOOL)validate:(MPParseError *__autoreleasing *)error; - (NSDecimalNumber *)evaluate; - (NSArray *)expressionElements; // Converts @end