next up previous
Next: Appendix: The Taylor method Up: Taylor User's Manual Previous: Write a Driving Routine

Appendix A: Taylor Grammar

program:
                     /* empty */
                    | stmts ';'
                    ;
stmts: 
                      stmt
                    | stmts ';' stmt
                    ;  
stmt:
                      derivative
                    | define
                    | declare
                    | control
                    ;

control:            INITIALV '=' initials
                    ;


initials:          expr
                   | initials ',' expr
                   ;

derivative:
                    DIFF '(' id ',' id ')' '=' expr
                    ;

define:             
                      id  '='  expr 
                    ;

declare:          
                    EXTRN  settype declrs
                    ;

declrs:
                    declare_one
                    | declrs ',' declare_one
                    ;

declare_one:
                    decl_id
                    | declare_one  decl_array 
                    ;

decl_id:
                    ID
                      ;

decl_array:        '[' INTCON ']'
                    | '[' ']'
                      ;

settype:           /* empty */ 
                   | INT
                   | SHORT
                   | CHAR
                   | REAL
                   ;
		    
id:
                    ID
                    ;


bexpr:
                       expr EQ  expr
                     | expr NEQ expr
                     | expr GE  expr
                     | expr GT  expr
                     | expr LE  expr
                     | expr LT  expr
                     | bexpr AND  bexpr
                     | bexpr OR   bexpr
                     | '(' bexpr ')'
                     ;

expr:
                     term
                    |  expr '^' expr
                    | expr '*' expr
                    | expr '/' expr
                    | expr '+' expr
                    | expr '-' expr
                    | '-' expr   %prec UNARY
                    | '+' expr   %prec UNARY
                    | IF '(' bexpr ')' '{' expr '}' ELSE '{' expr '}'
                    ;

term:
                    idexpr
                    | idexpr arrayref
                    | INTCON
                    | FLOATCON
                    | '(' expr ')'
                    | '(' error ')'
                    | idexpr '(' expr ')'
                    | SUM 
                     '(' expr ','  idexpr  '=' expr ',' expr ')'
                    ;

idexpr:
                    ID
                    ;

arrayref:            one_idx
                   | arrayref one_idx
                    ;

one_idx: 
                   '[' expr ']'
                    ;



Maorong Zou
Tue Nov 13 09:42:48 CST 2001