stage4/generate_c/generate_c_base.cc
changeset 257 90782e241346
parent 202 da1a8186f86f
child 258 d7d92b2f87e9
equal deleted inserted replaced
204:8ffa211b7f9a 257:90782e241346
   253     void *visit(integer_c *symbol) {return print_striped_token(symbol);}
   253     void *visit(integer_c *symbol) {return print_striped_token(symbol);}
   254     void *visit(binary_integer_c *symbol) {return print_striped_binary_token(symbol, 2);}
   254     void *visit(binary_integer_c *symbol) {return print_striped_binary_token(symbol, 2);}
   255     void *visit(octal_integer_c *symbol) {s4o.print("0"); return print_striped_token(symbol, 2);}
   255     void *visit(octal_integer_c *symbol) {s4o.print("0"); return print_striped_token(symbol, 2);}
   256     void *visit(hex_integer_c *symbol) {s4o.print("0x"); return print_striped_token(symbol, 3);}
   256     void *visit(hex_integer_c *symbol) {s4o.print("0x"); return print_striped_token(symbol, 3);}
   257 
   257 
       
   258     void *visit(neg_real_c *symbol) {
       
   259       s4o.print("-");
       
   260       symbol->exp->accept(*this);
       
   261       return NULL;
       
   262     }
       
   263 
       
   264     void *visit(neg_integer_c *symbol) {
       
   265       s4o.print("-");
       
   266       symbol->exp->accept(*this);
       
   267       return NULL;
       
   268     }
       
   269 
   258     void *visit(integer_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   270     void *visit(integer_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   259     void *visit(real_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   271     void *visit(real_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   260     void *visit(bit_string_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   272     void *visit(bit_string_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   261     void *visit(boolean_literal_c *symbol) {return print_literal(symbol->type, symbol->value);}
   273     void *visit(boolean_literal_c *symbol) {
       
   274       if (NULL != symbol->type)
       
   275         return print_literal(symbol->type, symbol->value);
       
   276       else {
       
   277 	bool_type_name_c bool_type;
       
   278 	return print_literal(&bool_type, symbol->value);
       
   279       }
       
   280     }
   262 
   281 
   263     /* helper class for boolean_literal_c */
   282     /* helper class for boolean_literal_c */
   264     void *visit(boolean_true_c *symbol) {s4o.print("TRUE"); return NULL;}
   283     void *visit(boolean_true_c *symbol) {s4o.print("TRUE"); return NULL;}
   265     void *visit(boolean_false_c *symbol) {s4o.print("FALSE"); return NULL;}
   284     void *visit(boolean_false_c *symbol) {s4o.print("FALSE"); return NULL;}
   266 
       
   267     void *visit(neg_literal_c *symbol) {
       
   268       s4o.print("-");
       
   269       symbol->exp->accept(*this);
       
   270       return NULL;
       
   271     }
       
   272 
   285 
   273     void *visit(neg_expression_c *symbol) {
   286     void *visit(neg_expression_c *symbol) {
   274       s4o.print("-");
   287       s4o.print("-");
   275       symbol->exp->accept(*this);
   288       symbol->exp->accept(*this);
   276       return NULL;
   289       return NULL;
   512 /* B.1.3 - Data types */
   525 /* B.1.3 - Data types */
   513 /**********************/
   526 /**********************/
   514 /***********************************/
   527 /***********************************/
   515 /* B 1.3.1 - Elementary Data Types */
   528 /* B 1.3.1 - Elementary Data Types */
   516 /***********************************/
   529 /***********************************/
   517     void *visit(time_type_name_c *symbol) {s4o.print("TIME"); return NULL;}
   530     void *visit(time_type_name_c *symbol)        {s4o.print("TIME");        return NULL;}
   518     void *visit(bool_type_name_c *symbol) {s4o.print("BOOL"); return NULL;}
   531     void *visit(bool_type_name_c *symbol)        {s4o.print("BOOL");        return NULL;}
   519     void *visit(sint_type_name_c *symbol) {s4o.print("SINT"); return NULL;}
   532     void *visit(sint_type_name_c *symbol)        {s4o.print("SINT");        return NULL;}
   520     void *visit(int_type_name_c *symbol) {s4o.print("INT"); return NULL;}
   533     void *visit(int_type_name_c *symbol)         {s4o.print("INT");         return NULL;}
   521     void *visit(dint_type_name_c *symbol) {s4o.print("DINT"); return NULL;}
   534     void *visit(dint_type_name_c *symbol)        {s4o.print("DINT");        return NULL;}
   522     void *visit(lint_type_name_c *symbol) {s4o.print("LINT"); return NULL;}
   535     void *visit(lint_type_name_c *symbol)        {s4o.print("LINT");        return NULL;}
   523     void *visit(usint_type_name_c *symbol) {s4o.print("USINT"); return NULL;}
   536     void *visit(usint_type_name_c *symbol)       {s4o.print("USINT");       return NULL;}
   524     void *visit(uint_type_name_c *symbol) {s4o.print("UINT"); return NULL;}
   537     void *visit(uint_type_name_c *symbol)        {s4o.print("UINT");        return NULL;}
   525     void *visit(udint_type_name_c *symbol) {s4o.print("UDINT"); return NULL;}
   538     void *visit(udint_type_name_c *symbol)       {s4o.print("UDINT");       return NULL;}
   526     void *visit(ulint_type_name_c *symbol) {s4o.print("ULINT"); return NULL;}
   539     void *visit(ulint_type_name_c *symbol)       {s4o.print("ULINT");       return NULL;}
   527     void *visit(real_type_name_c *symbol) {s4o.print("REAL"); return NULL;}
   540     void *visit(real_type_name_c *symbol)        {s4o.print("REAL");        return NULL;}
   528     void *visit(lreal_type_name_c *symbol) {s4o.print("LREAL"); return NULL;}
   541     void *visit(lreal_type_name_c *symbol)       {s4o.print("LREAL");       return NULL;}
   529     void *visit(date_type_name_c *symbol) {s4o.print("DATE"); return NULL;}
   542     void *visit(date_type_name_c *symbol)        {s4o.print("DATE");        return NULL;}
   530     void *visit(tod_type_name_c *symbol) {s4o.print("TOD"); return NULL;}
   543     void *visit(tod_type_name_c *symbol)         {s4o.print("TOD");         return NULL;}
   531     void *visit(dt_type_name_c *symbol) {s4o.print("DT"); return NULL;}
   544     void *visit(dt_type_name_c *symbol)          {s4o.print("DT");          return NULL;}
   532     void *visit(byte_type_name_c *symbol) {s4o.print("BYTE"); return NULL;}
   545     void *visit(byte_type_name_c *symbol)        {s4o.print("BYTE");        return NULL;}
   533     void *visit(word_type_name_c *symbol) {s4o.print("WORD"); return NULL;}
   546     void *visit(word_type_name_c *symbol)        {s4o.print("WORD");        return NULL;}
   534     void *visit(lword_type_name_c *symbol) {s4o.print("LWORD"); return NULL;}
   547     void *visit(lword_type_name_c *symbol)       {s4o.print("LWORD");       return NULL;}
   535     void *visit(dword_type_name_c *symbol) {s4o.print("DWORD"); return NULL;}
   548     void *visit(dword_type_name_c *symbol)       {s4o.print("DWORD");       return NULL;}
   536     void *visit(string_type_name_c *symbol) {s4o.print("STRING"); return NULL;}
   549     void *visit(string_type_name_c *symbol)      {s4o.print("STRING");      return NULL;}
   537     void *visit(wstring_type_name_c *symbol) {s4o.print("WSTRING"); return NULL;}
   550     void *visit(wstring_type_name_c *symbol)     {s4o.print("WSTRING");     return NULL;}
   538     /******************************************************/
   551 
   539     /* Extensions to the base standard as defined in      */
   552     void *visit(safetime_type_name_c *symbol)    {s4o.print("TIME");    return NULL;}
   540     /* "Safety Software Technical Specification,          */
   553     void *visit(safebool_type_name_c *symbol)    {s4o.print("BOOL");    return NULL;}
   541     /*  Part 1: Concepts and Function Blocks,             */
   554     void *visit(safesint_type_name_c *symbol)    {s4o.print("SINT");    return NULL;}
   542     /*  Version 1.0 – Official Release"                   */
   555     void *visit(safeint_type_name_c *symbol)     {s4o.print("INT");     return NULL;}
   543     /* by PLCopen - Technical Committee 5 - 2006-01-31    */
   556     void *visit(safedint_type_name_c *symbol)    {s4o.print("DINT");    return NULL;}
   544     /******************************************************/
   557     void *visit(safelint_type_name_c *symbol)    {s4o.print("LINT");    return NULL;}
   545     void *visit(safebool_type_name_c *symbol) {s4o.print("SAFEBOOL"); return NULL;}
   558     void *visit(safeusint_type_name_c *symbol)   {s4o.print("USINT");   return NULL;}
       
   559     void *visit(safeuint_type_name_c *symbol)    {s4o.print("UINT");    return NULL;}
       
   560     void *visit(safeudint_type_name_c *symbol)   {s4o.print("UDINT");   return NULL;}
       
   561     void *visit(safeulint_type_name_c *symbol)   {s4o.print("ULINT");   return NULL;}
       
   562     void *visit(safereal_type_name_c *symbol)    {s4o.print("REAL");    return NULL;}
       
   563     void *visit(safelreal_type_name_c *symbol)   {s4o.print("LREAL");   return NULL;}
       
   564     void *visit(safedate_type_name_c *symbol)    {s4o.print("DATE");    return NULL;}
       
   565     void *visit(safetod_type_name_c *symbol)     {s4o.print("TOD");     return NULL;}
       
   566     void *visit(safedt_type_name_c *symbol)      {s4o.print("DT");      return NULL;}
       
   567     void *visit(safebyte_type_name_c *symbol)    {s4o.print("BYTE");    return NULL;}
       
   568     void *visit(safeword_type_name_c *symbol)    {s4o.print("WORD");    return NULL;}
       
   569     void *visit(safelword_type_name_c *symbol)   {s4o.print("LWORD");   return NULL;}
       
   570     void *visit(safedword_type_name_c *symbol)   {s4o.print("DWORD");   return NULL;}
       
   571     void *visit(safestring_type_name_c *symbol)  {s4o.print("STRING");  return NULL;}
       
   572     void *visit(safewstring_type_name_c *symbol) {s4o.print("WSTRING"); return NULL;}
   546 
   573 
   547 /********************************/
   574 /********************************/
   548 /* B.1.3.2 - Generic data types */
   575 /* B.1.3.2 - Generic data types */
   549 /********************************/
   576 /********************************/
   550   /* originally empty... */
   577   /* originally empty... */