blob: 642c5115fe51d783d32dcae1603a1ead616cccab [file] [log] [blame]
tree grammar PolyDifferentiator;
options {
tokenVocab=Poly;
language=ObjC;
ASTLabelType=CommonTree;
output=AST;
// rewrite=true; // works either in rewrite or normal mode
}
poly: ^('+' poly poly)
| ^(MULT INT ID) -> INT
| ^(MULT c=INT ^('^' ID e=INT))
{
NSString *c2 = [NSString stringWithFormat:@"\%d", $c.int*$e.int];
NSString *e2 = [NSString stringWithFormat:@"\%d", $e.int-1];
}
-> ^(MULT[@"*"] INT[c2] ^('^' ID INT[e2]))
| ^('^' ID e=INT)
{
NSString *c2 = [NSString stringWithFormat:@"\%d", $e.int];
NSString *e2 = [NSString stringWithFormat:@"\%d", $e.int-1];
}
-> ^(MULT[@"*"] INT[c2] ^('^' ID INT[e2]))
| INT -> INT[@"0"]
| ID -> INT[@"1"]
;