Archived
1

Implemented Evaluation

This commit is contained in:
Kim Wittenburg
2014-09-07 16:45:31 +02:00
parent 8df8317413
commit 21bfe221ba
13 changed files with 593 additions and 96 deletions

View File

@@ -8,32 +8,37 @@
#import <Foundation/Foundation.h>
// DEBUG STUFF
// Simple Operator: +/-/*
// Simple Factor: * 5.4 * / * 5,4 / 5,4 * / 5,4
// Independant Math: -1+2-3
#import "MPParseError.h"
@interface MPParsedElement : NSObject <NSCopying>
@property (nonatomic, copy) NSString *definedVariable;
@property (nonatomic) NSUInteger afterVariableDefinitionIndex; // Only set if defineVariable != nil
@property (nonatomic) BOOL isFactor;
@property (nonatomic) double factor;
@property (nonatomic, strong) NSMutableArray *summands;
// If isFactor is YES this is the factor otherwise it is the independant summant
// of the element (may be 0).
@property (nonatomic) NSDecimalNumber *value;
@property (nonatomic) double prefixMultiplicator;
@property (nonatomic) BOOL hasPrefixMultiplicator;
@property (nonatomic, getter = isPrefixOperatorExplicit) BOOL prefixOperatorExplicit;
@property (nonatomic) double suffixMultiplicator;
@property (nonatomic) BOOL hasSuffixMultiplicator;
@property (nonatomic, getter = isPrefixValueExplicit) BOOL prefixValueExplicit;
@property (nonatomic) NSDecimalNumber *prefixMultiplicator;
// No error checking done. The string parsed may for example end with an operator
- (double)valueAtBeginning;
- (double)valueAtEnd;
- (double)standaloneValue;
@property (nonatomic, getter = isSuffixOperatorExplicit) BOOL suffixOperatorExplicit;
@property (nonatomic, getter = isSuffixValueExplicit) BOOL suffixValueExplicit;
@property (nonatomic) NSDecimalNumber *suffixMultiplicator;
@property (nonatomic) NSUInteger suffixIndex;
// No error checking done
- (NSDecimalNumber *)valueAtBeginning;
- (NSDecimalNumber *)valueAtEnd;
- (NSDecimalNumber *)standaloneValue;
// For error checking
- (BOOL)isValidElementAtBeginning;
- (BOOL)isValidElementInBetween;
- (BOOL)isValidElementAtEnd;
- (BOOL)isValidElementAtBeginning:(MPParseError **)error;
- (BOOL)isValidStandaloneElement:(MPParseError **)error;
- (BOOL)isValidElementAtEnd:(MPParseError **)error;
- (BOOL)isValidVariableDefinition:(MPParseError **)error;
@end