Diff for /loncom/homework/CAPA-converter/capaGrammarDef.y between versions 1.2 and 1.3

version 1.2, 2000/10/02 22:13:11 version 1.3, 2001/11/18 09:41:33
Line 59  extern int         Input_idx; Line 59  extern int         Input_idx;
 int                Current_line[MAX_OPENED_FILE];  int                Current_line[MAX_OPENED_FILE];
 extern int         Func_idx;  extern int         Func_idx;
 extern Symbol      FuncStack[MAX_FUNC_NEST];  extern Symbol      FuncStack[MAX_FUNC_NEST];
 extern int         IFstatus[MAX_FUNC_NEST];  /*extern int         IFstatus[MAX_FUNC_NEST];*/
 extern int         IFcount;  extern int         IFcount;
 /*extern int         gUnitError;*/  /*extern int         gUnitError;*/
   
Line 295  if_expr      :  CAPA_IF '(' calc_expr  ' Line 295  if_expr      :  CAPA_IF '(' calc_expr  '
                                           YYDBUG_PR2("(IF expr <IFcount=%d>)\n",IFcount);                                            YYDBUG_PR2("(IF expr <IFcount=%d>)\n",IFcount);
                                           switch($3->s_type) {                                            switch($3->s_type) {
                                             case IDENTIFIER:                                               case IDENTIFIER: 
                                                    IFstatus[IFcount] = IF_FALSE;             /*IFstatus[IFcount] = IF_FALSE;*/
                                                    begin_next_line();                                                     begin_next_line();
                                                    break;                                                     break;
                                             case I_CONSTANT: case I_VAR:                                               case I_CONSTANT: case I_VAR: 
                                                    if(!$3->s_int) {                                                     if(!$3->s_int) {
                                                       IFstatus[IFcount] = IF_FALSE;       /*IFstatus[IFcount] = IF_FALSE;
                                                       begin_if_skip();                                                        begin_if_skip();*/
                                                    } else {                                                     } else {
                                                       IFstatus[IFcount] = IF_TRUE;       /*IFstatus[IFcount] = IF_TRUE;*/
                                                       begin_next_line();                                                        begin_next_line();
                                                    }                                                      } 
                                                    break;                                                     break;
                                             case R_CONSTANT: case R_VAR:                                              case R_CONSTANT: case R_VAR:
                                                    if($3->s_real == 0.0) {                                                     if($3->s_real == 0.0) {
                                                       IFstatus[IFcount] = IF_FALSE;       /*IFstatus[IFcount] = IF_FALSE;
                                                       begin_if_skip();                                                        begin_if_skip();*/
                                                    }else{                                                     }else{
                                                       IFstatus[IFcount] = IF_TRUE;       /*IFstatus[IFcount] = IF_TRUE;*/
                                                       begin_next_line();                                                        begin_next_line();
                                                    }                                                     }
                                                    break;                                                     break;
Line 322  if_expr      :  CAPA_IF '(' calc_expr  ' Line 322  if_expr      :  CAPA_IF '(' calc_expr  '
                                                       capa_mfree($3->s_str);                                                        capa_mfree($3->s_str);
                                                    }                                                      } 
                                                    if(leng == 0) {                                                     if(leng == 0) {
                                                       IFstatus[IFcount] = IF_FALSE;       /*IFstatus[IFcount] = IF_FALSE;
                                                       begin_if_skip();                                                        begin_if_skip();*/
                                                    }else{                                                     }else{
                                                       IFstatus[IFcount] = IF_TRUE;       /*IFstatus[IFcount] = IF_TRUE;*/
                                                       begin_next_line();                                                        begin_next_line();
                                                    }                                                     }
                                                    break;                                                     break;
Line 335  if_expr      :  CAPA_IF '(' calc_expr  ' Line 335  if_expr      :  CAPA_IF '(' calc_expr  '
                                                       capa_mfree($3->s_str);                                                        capa_mfree($3->s_str);
                                                    }                                                     }
    if(leng == 0) {     if(leng == 0) {
                                                       IFstatus[IFcount] = IF_FALSE;       /*IFstatus[IFcount] = IF_FALSE;*/
                                                       begin_if_skip();                                                        /*begin_if_skip();*/
                                                    }else{                                                     }else{
                                                       IFstatus[IFcount] = IF_TRUE;       /*IFstatus[IFcount] = IF_TRUE;*/
                                                       begin_next_line();                                                        begin_next_line();
                                                    }                                                     }
                                                    break;                                                     break;
Line 708  term         : term '*' basic_constr   { Line 708  term         : term '*' basic_constr   {
                                          YYDBUG_PR1(" term <= basic_constr "); YYDBUG_SYM($1);   }                                           YYDBUG_PR1(" term <= basic_constr "); YYDBUG_SYM($1);   }
              ;               ;
   
 basic_constr : FUNCTION_ID '('  ')'   {  int tmp;  basic_constr : FUNCTION_ID '('  ')'   {  /*int tmp;*/
                                                                                     
                                          Func_idx--;                                           Func_idx--;
                                          if(Func_idx >= 0 ) {                                           if(Func_idx >= 0 ) {
Line 719  basic_constr : FUNCTION_ID '('  ')'   { Line 719  basic_constr : FUNCTION_ID '('  ')'   {
                                                                                     
                                       }                                        }
              | FUNCTION_ID '(' arg_list ')'               | FUNCTION_ID '(' arg_list ')'
                                       {  int  tmp;                                        {  /*int  tmp; */
                                                                               
                                          Func_idx--;                                           Func_idx--;
                                          YYDBUG_PR4(" basic_constr <= FUNCTION<%s><argc=%d> YYSTATE(%d) ",                                           YYDBUG_PR4(" basic_constr <= FUNCTION<%s><argc=%d> YYSTATE(%d) ",
Line 867  void free_calc_expr(Symbol *expr) Line 867  void free_calc_expr(Symbol *expr)
 Symbol* get_array_symbol ( name,index,free_symbols )   Symbol* get_array_symbol ( name,index,free_symbols ) 
 Symbol *name,*index;int free_symbols;  Symbol *name,*index;int free_symbols;
 {  {
   Symbol  *s_p, *a_p;    Symbol  *s_p/*, *a_p*/;
   char    *key, *tmp;    char    *key, *tmp;
   int      leng, idx_len;    int      leng, idx_len;
   leng = strlen(name->s_name)+8; /* [ ] */    leng = strlen(name->s_name)+8; /* [ ] */
Line 912  Symbol * build_array_list(ar_name,num_el Line 912  Symbol * build_array_list(ar_name,num_el
 Symbol *ar_name;int num_elem;  Symbol *ar_name;int num_elem;
 {  {
   int     i;    int     i;
   Symbol *arg_list,*a_p;    Symbol *arg_list/*,*a_p*/;
   char    idx_str[MAX_BUFFER_SIZE];    char    idx_str[MAX_BUFFER_SIZE];
       
   /*a_p = find_arrayid(ar_name->s_name);*/    /*a_p = find_arrayid(ar_name->s_name);*/

Removed from v.1.2  
changed lines
  Added in v.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>