stage3/visit_expression_type.cc
changeset 287 9df7fcb9bde5
parent 286 a4f4990d5c66
child 288 200efef43c3e
equal deleted inserted replaced
286:a4f4990d5c66 287:9df7fcb9bde5
    41 #include <list>
    41 #include <list>
    42 #include <string>
    42 #include <string>
    43 #include <string.h>
    43 #include <string.h>
    44 #include <strings.h>
    44 #include <strings.h>
    45 
    45 
       
    46 
    46 /*
    47 /*
    47 static inline symbol_c * FIRST_(symbol_c *symbol1, symbol_c *symbol2) {
       
    48   if (symbol1->first_file  == symbol2->first_file)   return symbol1;
       
    49 
       
    50   if (symbol1->first_line   < symbol2->first_line)   return symbol1;
       
    51   if (symbol1->first_line   > symbol2->first_line)   return symbol2;
       
    52   if (symbol1->first_column < symbol2->first_column) return symbol1;
       
    53   if (symbol1->first_column > symbol2->first_column) return symbol2;
       
    54   return symbol1;
       
    55 }
       
    56 
       
    57 #define FIRST_(symbol1, symbol2) (((symbol1)->last_file   == (symbol2)->first_file)   ? (symbol1) :    \
       
    58                                   ((symbol1)->first_file  == (symbol2)->last_file)    ? (symbol2) :    \
       
    59                                   ((symbol1)->first_line   < (symbol2)->first_line)   ? (symbol1) :    \
       
    60                                   ((symbol1)->first_line   > (symbol2)->first_line)   ? (symbol2) :    \
       
    61                                   ((symbol1)->first_column < (symbol2)->first_column) ? (symbol1) :    \
       
    62                                   ((symbol1)->first_column > (symbol2)->first_column) ? (symbol2) :    \
       
    63                                   (symbol1))
       
    64 */
       
    65 #define FIRST_(symbol1, symbol2) (((symbol1)->first_line   < (symbol2)->first_line)   ? (symbol1) :    \
    48 #define FIRST_(symbol1, symbol2) (((symbol1)->first_line   < (symbol2)->first_line)   ? (symbol1) :    \
    66                                   ((symbol1)->first_line   > (symbol2)->first_line)   ? (symbol2) :    \
    49                                   ((symbol1)->first_line   > (symbol2)->first_line)   ? (symbol2) :    \
    67                                   ((symbol1)->first_column < (symbol2)->first_column) ? (symbol1) :    \
    50                                   ((symbol1)->first_column < (symbol2)->first_column) ? (symbol1) :    \
    68                                   ((symbol1)->first_column > (symbol2)->first_column) ? (symbol2) :    \
    51                                   ((symbol1)->first_column > (symbol2)->first_column) ? (symbol2) :    \
    69                                   (symbol1))
    52                                   (symbol1))
    71 #define  LAST_(symbol1, symbol2) (((symbol1)->last_line    < (symbol2)->last_line)    ? (symbol2) :    \
    54 #define  LAST_(symbol1, symbol2) (((symbol1)->last_line    < (symbol2)->last_line)    ? (symbol2) :    \
    72                                   ((symbol1)->last_line    > (symbol2)->last_line)    ? (symbol1) :    \
    55                                   ((symbol1)->last_line    > (symbol2)->last_line)    ? (symbol1) :    \
    73                                   ((symbol1)->last_column  < (symbol2)->last_column)  ? (symbol2) :    \
    56                                   ((symbol1)->last_column  < (symbol2)->last_column)  ? (symbol2) :    \
    74                                   ((symbol1)->last_column  > (symbol2)->last_column)  ? (symbol1) :    \
    57                                   ((symbol1)->last_column  > (symbol2)->last_column)  ? (symbol1) :    \
    75                                   (symbol1))
    58                                   (symbol1))
       
    59 */
       
    60 #define FIRST_(symbol1, symbol2) (((symbol1)->first_order < (symbol2)->first_order)   ? (symbol1) : (symbol2))
       
    61 #define  LAST_(symbol1, symbol2) (((symbol1)->last_order  > (symbol2)->last_order)    ? (symbol1) : (symbol2))
    76 
    62 
    77 #define STAGE3_ERROR(symbol1, symbol2, msg) {                                          \
    63 #define STAGE3_ERROR(symbol1, symbol2, msg) {                                          \
    78     fprintf(stderr, "%s:(%d:%d) .. %s(%d:%d): %s\n",                                   \
    64     fprintf(stderr, "%s:(%d:%d) .. %s(%d:%d): %s\n",                                   \
    79            FIRST_(symbol1,symbol2)->first_file, FIRST_(symbol1,symbol2)->first_line, FIRST_(symbol1,symbol2)->first_column, \
    65            FIRST_(symbol1,symbol2)->first_file, FIRST_(symbol1,symbol2)->first_line, FIRST_(symbol1,symbol2)->first_column, \
    80            LAST_(symbol1,symbol2) ->last_file,  LAST_(symbol1,symbol2) ->last_line,  LAST_(symbol1,symbol2) ->last_column,  \
    66            LAST_(symbol1,symbol2) ->last_file,  LAST_(symbol1,symbol2) ->last_line,  LAST_(symbol1,symbol2) ->last_column,  \