Home | History | Annotate | Download | only in polydiff
      1 #import <Foundation/Foundation.h>
      2 #import <ANTLR/ANTLR.h>
      3 #import "PolyLexer.h"
      4 #import "PolyParser.h"
      5 // #import "PolyDifferentiator.h"
      6 // #import "PolyPrinter.h"
      7 // #import "Simplifier.h"
      8 
      9 
     10 int main(int argc, const char *argv[])
     11 {
     12     NSError *error;
     13     NSLog(@"starting polydiff\n");
     14 	NSString *input = [NSString stringWithContentsOfFile:@"../../examples/polydiff/input"  encoding:NSASCIIStringEncoding error:&error];
     15 	ANTLRStringStream *stream = [ANTLRStringStream newANTLRStringStream:input];
     16 	NSLog(@"%@", input);
     17 
     18 // BUILD AST
     19     PolyLexer *lex = [PolyLexer newPolyLexerWithCharStream:stream];
     20     CommonTokenStream *tokens = [CommonTokenStream newCommonTokenStreamWithTokenSource:lex];
     21     PolyParser *parser = [PolyParser newPolyParser:tokens];
     22     PolyParser_poly_return *r = [parser poly];
     23     NSLog(@"tree=%@", [r.tree toStringTree]);
     24 
     25 #ifdef DONTUSENOMO
     26 // DIFFERENTIATE
     27     CommonTreeNodeStream *nodes = [CommonTreeNodeStream newCommonTreeNodeStream:r.tree];
     28     [nodes setTokenStream:tokens];
     29     PolyDifferentiator *differ = [PolyDifferentiator newPolyDifferentiator:nodes];
     30     PolyDifferentiator_poly_return *r2 = [differ poly];
     31     NSLog("d/dx=%@", [r2.tree toStringTree]);
     32 
     33 // SIMPLIFY / NORMALIZE
     34     nodes = [CommonTreeNodeStream newCommonTreeNodeStream:r2.tree];
     35     [nodes setTokenStream:tokens];
     36     Simplifier *reducer = [Simplifier newSimplifier:nodes];
     37     Simplifier_poly_return *r3 = [reducer poly];
     38     NSLog("simplified=%@", [r3.tree toStringTree]);
     39 
     40 // CONVERT BACK TO POLYNOMIAL
     41     nodes = [CommonTreeNodeStream newCommonTreeNodeStream:r3.tree];
     42     [nodes setTokenStream:tokens];
     43     PolyPrinter *printer = [PolyPrinter newPolyPrinter:nodes];
     44     PolyPrinter_poly_return *r4 = [printer poly];
     45     NSLog( [r4.st toString]);
     46 #endif
     47 
     48     NSLog(@"exiting PolyDiff\n");
     49     return 0;
     50 }
     51