Removing un-necessary symbol direct_variable_type_name_c from abstract syntax tree
authormario
Thu, 18 Jun 2009 19:18:54 +0200
changeset 194 e18690830555
parent 193 5ef4fe412e34
child 195 66d501d7b67d
Removing un-necessary symbol direct_variable_type_name_c from abstract syntax tree
absyntax/absyntax.def
absyntax_utils/search_base_type.cc
absyntax_utils/search_base_type.hh
absyntax_utils/search_constant_type.cc
absyntax_utils/search_constant_type.hh
absyntax_utils/search_expression_type.cc
stage4/generate_iec/generate_iec.cc
--- a/absyntax/absyntax.def	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax/absyntax.def	Thu Jun 18 19:18:54 2009 +0200
@@ -208,7 +208,6 @@
 SYM_REF0(wstring_type_name_c)
 SYM_REF0(constant_int_type_name_c)
 SYM_REF0(constant_real_type_name_c)
-SYM_REF0(direct_variable_type_name_c)
 
 
 /********************************/
--- a/absyntax_utils/search_base_type.cc	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax_utils/search_base_type.cc	Thu Jun 18 19:18:54 2009 +0200
@@ -93,7 +93,6 @@
 void *search_base_type_c::visit(wstring_type_name_c *symbol)	{return (void *)symbol;}
 void *search_base_type_c::visit(constant_int_type_name_c *symbol)    {return (void *)symbol;}
 void *search_base_type_c::visit(constant_real_type_name_c *symbol)    {return (void *)symbol;}
-void *search_base_type_c::visit(direct_variable_type_name_c *symbol)    {return (void *)symbol;}
 /******************************************************/
 /* Extensions to the base standard as defined in      */
 /* "Safety Software Technical Specification,          */
--- a/absyntax_utils/search_base_type.hh	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax_utils/search_base_type.hh	Thu Jun 18 19:18:54 2009 +0200
@@ -79,7 +79,6 @@
     void *visit(wstring_type_name_c *symbol);
     void *visit(constant_int_type_name_c *symbol);
     void *visit(constant_real_type_name_c *symbol);
-    void *visit(direct_variable_type_name_c *symbol);
 
     /******************************************************/
     /* Extensions to the base standard as defined in      */
--- a/absyntax_utils/search_constant_type.cc	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax_utils/search_constant_type.cc	Thu Jun 18 19:18:54 2009 +0200
@@ -122,4 +122,3 @@
 
 constant_real_type_name_c     search_constant_type_c::constant_real_type_name;
 constant_int_type_name_c      search_constant_type_c::constant_int_type_name;
-direct_variable_type_name_c   search_constant_type_c::direct_variable_type_name;
--- a/absyntax_utils/search_constant_type.hh	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax_utils/search_constant_type.hh	Thu Jun 18 19:18:54 2009 +0200
@@ -69,7 +69,6 @@
 
   static constant_real_type_name_c     constant_real_type_name;
   static constant_int_type_name_c      constant_int_type_name;
-  static direct_variable_type_name_c   direct_variable_type_name;
 
   /******************************************************/
   /* Extensions to the base standard as defined in      */
--- a/absyntax_utils/search_expression_type.cc	Thu Jun 18 18:49:29 2009 +0200
+++ b/absyntax_utils/search_expression_type.cc	Thu Jun 18 19:18:54 2009 +0200
@@ -82,7 +82,6 @@
   if (typeid(*type_symbol) == typeid(udint_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(ulint_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(constant_int_type_name_c)) {return true;}
-  if (typeid(*type_symbol) == typeid(direct_variable_type_name_c)) {return true;}
   return false;
 }
 
@@ -91,7 +90,6 @@
   if (typeid(*type_symbol) == typeid(real_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(lreal_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(constant_real_type_name_c)) {return true;}
-  if (typeid(*type_symbol) == typeid(direct_variable_type_name_c)) {return true;}
   return false;
 }
 
@@ -107,7 +105,6 @@
   if (typeid(*type_symbol) == typeid(dword_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(lword_type_name_c)) {return true;}
   if (typeid(*type_symbol) == typeid(constant_int_type_name_c)) {return true;}
-  if (typeid(*type_symbol) == typeid(direct_variable_type_name_c)) {return true;}
   return false;
 }
 
@@ -126,8 +123,6 @@
   if ((typeid(*first_type) == typeid(constant_int_type_name_c) && is_binary_type(second_type))) {return true;}
   if (is_real_type(first_type) && (typeid(*second_type) == typeid(constant_real_type_name_c))) {return true;}
   if ((typeid(*first_type) == typeid(constant_real_type_name_c) && is_real_type(second_type))) {return true;}
-  if (typeid(*first_type) == typeid(direct_variable_type_name_c)) {return true;}
-  if (typeid(*second_type) == typeid(direct_variable_type_name_c)) {return true;}
   return false;
 }
 
@@ -136,12 +131,12 @@
   if (first_type == NULL) {return second_type;}
   if (second_type == NULL) {return first_type;}
   if (typeid(*first_type) == typeid(*second_type)) {return first_type;}
-  if (is_integer_type(first_type) && (typeid(*second_type) == typeid(constant_int_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c))) {return first_type;}
-  if ((typeid(*first_type) == typeid(constant_int_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c)) && is_integer_type(second_type)) {return second_type;}
-  if (is_binary_type(first_type) && (typeid(*second_type) == typeid(constant_int_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c))) {return first_type;}
-  if ((typeid(*first_type) == typeid(constant_int_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c)) && is_binary_type(second_type)) {return second_type;}
-  if (is_real_type(first_type) && (typeid(*second_type) == typeid(constant_real_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c))) {return first_type;}
-  if ((typeid(*first_type) == typeid(constant_real_type_name_c) || typeid(*second_type) == typeid(direct_variable_type_name_c)) && is_real_type(second_type)) {return second_type;}
+  if (is_integer_type(first_type) && (typeid(*second_type) == typeid(constant_int_type_name_c))) {return first_type;}
+  if ((typeid(*first_type) == typeid(constant_int_type_name_c)) && is_integer_type(second_type)) {return second_type;}
+  if (is_binary_type(first_type) && (typeid(*second_type) == typeid(constant_int_type_name_c)))  {return first_type;}
+  if ((typeid(*first_type) == typeid(constant_int_type_name_c)) && is_binary_type(second_type)) {return second_type;}
+  if (is_real_type(first_type) && (typeid(*second_type) == typeid(constant_real_type_name_c))) {return first_type;}
+  if ((typeid(*first_type) == typeid(constant_real_type_name_c)) && is_real_type(second_type)) {return second_type;}
   return NULL;
 }
 
@@ -198,11 +193,19 @@
 /********************************************/
 void *search_expression_type_c::visit(direct_variable_c *symbol) {
   switch (symbol->value[2]) {
-    case 'X': // bit
+    case 'X': // bit - 1 bit
       return (void *)&bool_type_name;
-    default:
-      return (void *)&direct_variable_type_name;
-   }
+    case 'B': // byte - 8 bits
+      return (void *)&byte_type_name;
+    case 'W': // word - 16 bits
+      return (void *)&word_type_name;
+    case 'D': // double word - 32 bits
+      return (void *)&dword_type_name;
+    case 'L': // long word - 64 bits
+      return (void *)&lword_type_name;
+    default:  // if none of the above, then the empty string was used <=> boolean 
+      return (void *)&bool_type_name;
+  }
 }
 
 /*************************************/
--- a/stage4/generate_iec/generate_iec.cc	Thu Jun 18 18:49:29 2009 +0200
+++ b/stage4/generate_iec/generate_iec.cc	Thu Jun 18 19:18:54 2009 +0200
@@ -316,7 +316,6 @@
 void *visit(wstring_type_name_c *symbol) {s4o.print("WSTRING"); return NULL;}
 void *visit(constant_int_type_name_c *symbol) {return NULL;}
 void *visit(constant_real_type_name_c *symbol) {return NULL;}
-void *visit(direct_variable_type_name_c *symbol) {return NULL;}
 
 
 /********************************/