stage4/generate_c/generate_c_st.cc
changeset 1041 56ebe2a31b5b
parent 1026 fe580c0c1911
child 1049 4d7183013481
equal deleted inserted replaced
1040:e8563dcaefca 1041:56ebe2a31b5b
   420   for (int i =  0; i < symbol->n; i++) {
   420   for (int i =  0; i < symbol->n; i++) {
   421     symbol_c* dimension = array_dimension_iterator->next();
   421     symbol_c* dimension = array_dimension_iterator->next();
   422     if (dimension == NULL) ERROR;
   422     if (dimension == NULL) ERROR;
   423 
   423 
   424     s4o.print("[(");
   424     s4o.print("[(");
   425     symbol->elements[i]->accept(*this);
   425     symbol->get_element(i)->accept(*this);
   426     s4o.print(") - (");
   426     s4o.print(") - (");
   427     dimension->accept(*this);
   427     dimension->accept(*this);
   428     s4o.print(")]");
   428     s4o.print(")]");
   429   }
   429   }
   430   delete array_dimension_iterator;
   430   delete array_dimension_iterator;
   923 /********************/
   923 /********************/
   924 /* B 3.2 Statements */
   924 /* B 3.2 Statements */
   925 /********************/
   925 /********************/
   926 void *visit(statement_list_c *symbol) {
   926 void *visit(statement_list_c *symbol) {
   927   for(int i = 0; i < symbol->n; i++) {
   927   for(int i = 0; i < symbol->n; i++) {
   928     print_line_directive(symbol->elements[i]);
   928     print_line_directive(symbol->get_element(i));
   929     s4o.print(s4o.indent_spaces);
   929     s4o.print(s4o.indent_spaces);
   930     symbol->elements[i]->accept(*this);
   930     symbol->get_element(i)->accept(*this);
   931     s4o.print(";\n");
   931     s4o.print(";\n");
   932   }
   932   }
   933   return NULL;
   933   return NULL;
   934 }
   934 }
   935 
   935 
  1211      *             (__case_expression == 42) ||
  1211      *             (__case_expression == 42) ||
  1212      *             (__case_expression >= 15 && __case_expression <= 99)) {
  1212      *             (__case_expression >= 15 && __case_expression <= 99)) {
  1213      */
  1213      */
  1214     if (0 != i)  s4o.print(" ||\n" + s4o.indent_spaces + "         ");
  1214     if (0 != i)  s4o.print(" ||\n" + s4o.indent_spaces + "         ");
  1215     s4o.print("(");
  1215     s4o.print("(");
  1216     subrange_c *subrange = dynamic_cast<subrange_c *>(symbol->elements[i]);
  1216     subrange_c *subrange = dynamic_cast<subrange_c *>(symbol->get_element(i));
  1217     if (NULL == subrange) {
  1217     if (NULL == subrange) {
  1218       s4o.print("__case_expression == ");
  1218       s4o.print("__case_expression == ");
  1219       symbol->elements[i]->accept(*this);
  1219       symbol->get_element(i)->accept(*this);
  1220     } else {
  1220     } else {
  1221       s4o.print("__case_expression >= ");
  1221       s4o.print("__case_expression >= ");
  1222       subrange->lower_limit->accept(*this);
  1222       subrange->lower_limit->accept(*this);
  1223       s4o.print(" && __case_expression <= ");
  1223       s4o.print(" && __case_expression <= ");
  1224       subrange->upper_limit->accept(*this);
  1224       subrange->upper_limit->accept(*this);