stage1_2/iec.y
changeset 134 0e43c556cd2d
parent 133 fff75b8283be
child 136 32bd7ef40897
equal deleted inserted replaced
133:fff75b8283be 134:0e43c556cd2d
  1682  */
  1682  */
  1683 /* ERROR_CHECK_BEGIN */
  1683 /* ERROR_CHECK_BEGIN */
  1684 | integer_type_name signed_integer
  1684 | integer_type_name signed_integer
  1685 	{$$ = NULL;
  1685 	{$$ = NULL;
  1686 	 yynerrs++;
  1686 	 yynerrs++;
  1687 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between integer type name and value in integer literal.");
  1687 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between integer type name and value in integer literal.");
  1688 	}
  1688 	}
  1689 | integer_type_name binary_integer
  1689 | integer_type_name binary_integer
  1690 	{$$ = NULL;
  1690 	{$$ = NULL;
  1691 	 yynerrs++;
  1691 	 yynerrs++;
  1692 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between integer type name and value in integer literal.");
  1692 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between integer type name and value in integer literal.");
  1693 	}
  1693 	}
  1694 | integer_type_name octal_integer
  1694 | integer_type_name octal_integer
  1695 	{$$ = NULL;
  1695 	{$$ = NULL;
  1696 	 yynerrs++;
  1696 	 yynerrs++;
  1697 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between integer type name and value in integer literal.");
  1697 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between integer type name and value in integer literal.");
  1698 	}
  1698 	}
  1699 | integer_type_name hex_integer
  1699 | integer_type_name hex_integer
  1700 	{$$ = NULL;
  1700 	{$$ = NULL;
  1701 	 yynerrs++;
  1701 	 yynerrs++;
  1702 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between integer type name and value in integer literal.");
  1702 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between integer type name and value in integer literal.");
  1703 	}
  1703 	}
  1704 | integer_type_name error signed_integer
  1704 | integer_type_name error signed_integer
  1705 	{$$ = NULL;
  1705 	{$$ = NULL;
  1706 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between integer type name and value in integer literal.");
  1706 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between integer type name and value in integer literal.");
  1707 	 yyerrok;
  1707 	 yyerrok;
  1708 	}
  1708 	}
  1709 | integer_type_name error binary_integer
  1709 | integer_type_name error binary_integer
  1710 	{$$ = NULL;
  1710 	{$$ = NULL;
  1711 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between integer type name and value in integer literal.");
  1711 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between integer type name and value in integer literal.");
  1712 	 yyerrok;
  1712 	 yyerrok;
  1713 	}
  1713 	}
  1714 | integer_type_name error octal_integer
  1714 | integer_type_name error octal_integer
  1715 	{$$ = NULL;
  1715 	{$$ = NULL;
  1716 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between integer type name and value in integer literal.");
  1716 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between integer type name and value in integer literal.");
  1717 	 yyerrok;
  1717 	 yyerrok;
  1718 	}
  1718 	}
  1719 | integer_type_name error hex_integer
  1719 | integer_type_name error hex_integer
  1720 	{$$ = NULL;
  1720 	{$$ = NULL;
  1721 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between integer type name and value in integer literal.");
  1721 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between integer type name and value in integer literal.");
  1722 	 yyerrok;
  1722 	 yyerrok;
  1723 	}
  1723 	}
  1724 | integer_type_name '#' error
  1724 | integer_type_name '#' error
  1725 	{$$ = NULL;
  1725 	{$$ = NULL;
  1726 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for integer literal.");
  1726 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for integer literal.");
  1727 	 yyerrok;
  1727 	 yyerrok;
  1728 	}
  1728 	}
  1729 /* ERROR_CHECK_END */
  1729 /* ERROR_CHECK_END */
  1730 ;
  1730 ;
  1731 
  1731 
  1751 	{$$ = new real_literal_c($1, $3, locf(@1), locl(@3));}
  1751 	{$$ = new real_literal_c($1, $3, locf(@1), locl(@3));}
  1752 /* ERROR_CHECK_BEGIN */
  1752 /* ERROR_CHECK_BEGIN */
  1753 | real_type_name signed_real
  1753 | real_type_name signed_real
  1754 	{$$ = NULL;
  1754 	{$$ = NULL;
  1755 	 yynerrs++;
  1755 	 yynerrs++;
  1756 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between real type name and value in real literal.");
  1756 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between real type name and value in real literal.");
  1757 	}
  1757 	}
  1758 | real_type_name error signed_real
  1758 | real_type_name error signed_real
  1759 	{$$ = NULL;
  1759 	{$$ = NULL;
  1760 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between real type name and value in real literal.");
  1760 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between real type name and value in real literal.");
  1761 	 yyerrok;
  1761 	 yyerrok;
  1762 	}
  1762 	}
  1763 | real_type_name '#' error
  1763 | real_type_name '#' error
  1764 	{$$ = NULL;
  1764 	{$$ = NULL;
  1765 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for real literal.");
  1765 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for real literal.");
  1766 	 yyerrok;
  1766 	 yyerrok;
  1767 	}
  1767 	}
  1768 /* ERROR_CHECK_END */
  1768 /* ERROR_CHECK_END */
  1769 ;
  1769 ;
  1770 
  1770 
  1808  */
  1808  */
  1809 /* ERROR_CHECK_BEGIN */
  1809 /* ERROR_CHECK_BEGIN */
  1810 | bit_string_type_name integer
  1810 | bit_string_type_name integer
  1811 	{$$ = NULL;
  1811 	{$$ = NULL;
  1812 	 yynerrs++;
  1812 	 yynerrs++;
  1813 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between bit string type name and value in bit string literal.");
  1813 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between bit string type name and value in bit string literal.");
  1814 	}
  1814 	}
  1815 | bit_string_type_name binary_integer
  1815 | bit_string_type_name binary_integer
  1816 	{$$ = NULL;
  1816 	{$$ = NULL;
  1817 	 yynerrs++;
  1817 	 yynerrs++;
  1818 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between bit string type name and value in bit string literal.");
  1818 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between bit string type name and value in bit string literal.");
  1819 	}
  1819 	}
  1820 | bit_string_type_name octal_integer
  1820 | bit_string_type_name octal_integer
  1821 	{$$ = NULL;
  1821 	{$$ = NULL;
  1822 	 yynerrs++;
  1822 	 yynerrs++;
  1823 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between bit string type name and value in bit string literal.");
  1823 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between bit string type name and value in bit string literal.");
  1824 	}
  1824 	}
  1825 | bit_string_type_name hex_integer
  1825 | bit_string_type_name hex_integer
  1826 	{$$ = NULL;
  1826 	{$$ = NULL;
  1827 	 yynerrs++;
  1827 	 yynerrs++;
  1828 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between bit string type name and value in bit string literal.");
  1828 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between bit string type name and value in bit string literal.");
  1829 	}
  1829 	}
  1830 | bit_string_type_name error integer
  1830 | bit_string_type_name error integer
  1831 	{$$ = NULL;
  1831 	{$$ = NULL;
  1832 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between bit string type name and value in bit string literal.");
  1832 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between bit string type name and value in bit string literal.");
  1833 	 yyerrok;
  1833 	 yyerrok;
  1834 	}
  1834 	}
  1835 | bit_string_type_name error binary_integer
  1835 | bit_string_type_name error binary_integer
  1836 	{$$ = NULL;
  1836 	{$$ = NULL;
  1837 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between bit string type name and value in bit string literal.");
  1837 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between bit string type name and value in bit string literal.");
  1838 	 yyerrok;
  1838 	 yyerrok;
  1839 	}
  1839 	}
  1840 | bit_string_type_name error octal_integer
  1840 | bit_string_type_name error octal_integer
  1841 	{$$ = NULL;
  1841 	{$$ = NULL;
  1842 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between bit string type name and value in bit string literal.");
  1842 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between bit string type name and value in bit string literal.");
  1843 	 yyerrok;
  1843 	 yyerrok;
  1844 	}
  1844 	}
  1845 | bit_string_type_name error hex_integer
  1845 | bit_string_type_name error hex_integer
  1846 	{$$ = NULL;
  1846 	{$$ = NULL;
  1847 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between bit string type name and value in bit string literal.");
  1847 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between bit string type name and value in bit string literal.");
  1848 	 yyerrok;
  1848 	 yyerrok;
  1849 	}
  1849 	}
  1850 | bit_string_type_name '#' error
  1850 | bit_string_type_name '#' error
  1851 	{$$ = NULL;
  1851 	{$$ = NULL;
  1852 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for bit string literal.");
  1852 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for bit string literal.");
  1853 	 yyerrok;
  1853 	 yyerrok;
  1854 	}
  1854 	}
  1855 /* ERROR_CHECK_END */
  1855 /* ERROR_CHECK_END */
  1856 ;
  1856 ;
  1857 
  1857 
  1953 	{$$ = new duration_c(new neg_time_c(locloc(@$)), $3, locloc(@$));}
  1953 	{$$ = new duration_c(new neg_time_c(locloc(@$)), $3, locloc(@$));}
  1954 /* ERROR_CHECK_BEGIN */
  1954 /* ERROR_CHECK_BEGIN */
  1955 | TIME interval
  1955 | TIME interval
  1956 	{$$ = NULL;
  1956 	{$$ = NULL;
  1957 	 yynerrs++;
  1957 	 yynerrs++;
  1958 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between 'TIME' and interval in duration.");
  1958 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between 'TIME' and interval in duration.");
  1959 	}
  1959 	}
  1960 | TIME '-' interval
  1960 | TIME '-' interval
  1961 	{$$ = NULL;
  1961 	{$$ = NULL;
  1962 	 yynerrs++;
  1962 	 yynerrs++;
  1963 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between 'TIME' and interval in duration.");
  1963 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between 'TIME' and interval in duration.");
  1964 	}
  1964 	}
  1965 | TIME error interval
  1965 | TIME error interval
  1966 	{$$ = NULL;
  1966 	{$$ = NULL;
  1967 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between 'TIME' and interval in duration.");
  1967 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between 'TIME' and interval in duration.");
  1968 	 yyerrok;
  1968 	 yyerrok;
  1969 	}
  1969 	}
  1970 | TIME error '-' interval
  1970 | TIME error '-' interval
  1971 	{$$ = NULL;
  1971 	{$$ = NULL;
  1972 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between 'TIME' and interval in duration.");
  1972 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between 'TIME' and interval in duration.");
  1973 	 yyerrok;
  1973 	 yyerrok;
  1974 	}
  1974 	}
  1975 | TIME '#' error
  1975 | TIME '#' error
  1976 	{$$ = NULL;
  1976 	{$$ = NULL;
       
  1977 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for duration.");
       
  1978 	 yyerrok;
       
  1979 	}
       
  1980 | T_SHARP error
       
  1981 	{$$ = NULL;
  1977 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for duration.");
  1982 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for duration.");
  1978 	 yyerrok;
       
  1979 	}
       
  1980 | T_SHARP error
       
  1981 	{$$ = NULL;
       
  1982 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid value for duration.");
       
  1983 	 yyerrok;
  1983 	 yyerrok;
  1984 	}
  1984 	}
  1985 /* ERROR_CHECK_END */
  1985 /* ERROR_CHECK_END */
  1986 ;
  1986 ;
  1987 
  1987 
  2048 | integer_d '_' hours
  2048 | integer_d '_' hours
  2049 	{$$ = new days_c($1, $3, locloc(@$));}
  2049 	{$$ = new days_c($1, $3, locloc(@$));}
  2050 /* ERROR_CHECK_BEGIN */
  2050 /* ERROR_CHECK_BEGIN */
  2051 | integer_d '_' error
  2051 | integer_d '_' error
  2052 	{$$ = NULL;
  2052 	{$$ = NULL;
  2053 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for hours in duration.");
  2053 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for hours in duration.");
  2054 	 yyerrok;
  2054 	 yyerrok;
  2055 	}
  2055 	}
  2056 /* ERROR_CHECK_END */
  2056 /* ERROR_CHECK_END */
  2057 ;
  2057 ;
  2058 
  2058 
  2067 | integer_h '_' minutes
  2067 | integer_h '_' minutes
  2068 	{$$ = new hours_c($1, $3, locloc(@$));}
  2068 	{$$ = new hours_c($1, $3, locloc(@$));}
  2069 /* ERROR_CHECK_BEGIN */
  2069 /* ERROR_CHECK_BEGIN */
  2070 | integer_h '_' error
  2070 | integer_h '_' error
  2071 	{$$ = NULL;
  2071 	{$$ = NULL;
  2072 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for minutes in duration.");
  2072 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for minutes in duration.");
  2073 	 yyerrok;
  2073 	 yyerrok;
  2074 	}
  2074 	}
  2075 /* ERROR_CHECK_END */
  2075 /* ERROR_CHECK_END */
  2076 
  2076 
  2077 ;
  2077 ;
  2086 | integer_m '_' seconds
  2086 | integer_m '_' seconds
  2087 	{$$ = new minutes_c($1, $3, locloc(@$));}
  2087 	{$$ = new minutes_c($1, $3, locloc(@$));}
  2088 /* ERROR_CHECK_BEGIN */
  2088 /* ERROR_CHECK_BEGIN */
  2089 | integer_m '_' error
  2089 | integer_m '_' error
  2090 	{$$ = NULL;
  2090 	{$$ = NULL;
  2091 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for seconds in duration.");
  2091 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for seconds in duration.");
  2092 	 yyerrok;
  2092 	 yyerrok;
  2093 	}
  2093 	}
  2094 /* ERROR_CHECK_END */
  2094 /* ERROR_CHECK_END */
  2095 ;
  2095 ;
  2096 
  2096 
  2104 | integer_s '_' milliseconds
  2104 | integer_s '_' milliseconds
  2105 	{$$ = new seconds_c($1, $3, locloc(@$));}
  2105 	{$$ = new seconds_c($1, $3, locloc(@$));}
  2106 /* ERROR_CHECK_BEGIN */
  2106 /* ERROR_CHECK_BEGIN */
  2107 | integer_s '_' error
  2107 | integer_s '_' error
  2108 	{$$ = NULL;
  2108 	{$$ = NULL;
  2109 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for milliseconds in duration.");
  2109 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for milliseconds in duration.");
  2110 	 yyerrok;
  2110 	 yyerrok;
  2111 	}
  2111 	}
  2112 /* ERROR_CHECK_END */
  2112 /* ERROR_CHECK_END */
  2113 ;
  2113 ;
  2114 
  2114 
  2128 	{$$ = new time_of_day_c($3, locloc(@$));}
  2128 	{$$ = new time_of_day_c($3, locloc(@$));}
  2129 /* ERROR_CHECK_BEGIN */
  2129 /* ERROR_CHECK_BEGIN */
  2130 | TIME_OF_DAY daytime
  2130 | TIME_OF_DAY daytime
  2131 	{$$ = NULL;
  2131 	{$$ = NULL;
  2132 	 yynerrs++;
  2132 	 yynerrs++;
  2133 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between 'TIME_OF_DAY' and daytime in time of day.");
  2133 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between 'TIME_OF_DAY' and daytime in time of day.");
  2134 	}
  2134 	}
  2135 | TIME_OF_DAY error daytime
  2135 | TIME_OF_DAY error daytime
  2136 	{$$ = NULL;
  2136 	{$$ = NULL;
  2137 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between 'TIME_OF_DAY' and daytime in time of day.");
  2137 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between 'TIME_OF_DAY' and daytime in time of day.");
  2138 	 yyerrok;
  2138 	 yyerrok;
  2139 	}
  2139 	}
  2140 | TIME_OF_DAY '#' error
  2140 | TIME_OF_DAY '#' error
  2141 	{$$ = NULL;
  2141 	{$$ = NULL;
  2142 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for time of day.");
  2142 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for time of day.");
  2143 	 yyerrok;
  2143 	 yyerrok;
  2144 	}
  2144 	}
  2145 /* ERROR_CHECK_END */
  2145 /* ERROR_CHECK_END */
  2146 ;
  2146 ;
  2147 
  2147 
  2151 	{$$ = new daytime_c($1, $3, $5, locloc(@$));}
  2151 	{$$ = new daytime_c($1, $3, $5, locloc(@$));}
  2152 /* ERROR_CHECK_BEGIN */
  2152 /* ERROR_CHECK_BEGIN */
  2153 | day_hour day_minute ':' day_second
  2153 | day_hour day_minute ':' day_second
  2154   {$$ = NULL;
  2154   {$$ = NULL;
  2155 	 yynerrs++;
  2155 	 yynerrs++;
  2156 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between hours and minutes in daytime.");
  2156 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between hours and minutes in daytime.");
  2157 	}
  2157 	}
  2158 | day_hour error day_minute ':' day_second
  2158 | day_hour error day_minute ':' day_second
  2159   {$$ = NULL;
  2159   {$$ = NULL;
  2160 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting ':' between hours and minutes in daytime.");
  2160 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':' between hours and minutes in daytime.");
  2161 	 yyerrok;
  2161 	 yyerrok;
  2162 	}
  2162 	}
  2163 | day_hour ':' ':' day_second
  2163 | day_hour ':' ':' day_second
  2164 	{$$ = NULL;
  2164 	{$$ = NULL;
  2165 	 yynerrs++;
  2165 	 yynerrs++;
  2166 	 print_err_msg(current_filename, locf(@2), locl(@3), "no minutes defined in daytime.");
  2166 	 print_err_msg(current_filename, locl(@2), locf(@3), "no minutes defined in daytime.");
  2167 	}
  2167 	}
  2168 | day_hour ':' error ':' day_second
  2168 | day_hour ':' error ':' day_second
  2169 	{$$ = NULL;
  2169 	{$$ = NULL;
  2170 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid value for minutes in daytime.");
  2170 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for minutes in daytime.");
  2171 	 yyerrok;
  2171 	 yyerrok;
  2172 	}
  2172 	}
  2173 | day_hour ':' day_minute day_second
  2173 | day_hour ':' day_minute day_second
  2174   {$$ = NULL;
  2174   {$$ = NULL;
  2175 	 yynerrs++;
  2175 	 yynerrs++;
  2176 	 print_err_msg(current_filename, locf(@3), locl(@4), "':' missing between minutes and seconds in daytime.");
  2176 	 print_err_msg(current_filename, locl(@3), locf(@4), "':' missing between minutes and seconds in daytime.");
  2177 	}
  2177 	}
  2178 | day_hour ':' day_minute error day_second
  2178 | day_hour ':' day_minute error day_second
  2179   {$$ = NULL;
  2179   {$$ = NULL;
  2180 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting ':' between minutes and seconds in daytime.");
  2180 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting ':' between minutes and seconds in daytime.");
  2181 	 yyerrok;
  2181 	 yyerrok;
  2182 	}
  2182 	}
  2183 | day_hour ':' day_minute ':' error
  2183 | day_hour ':' day_minute ':' error
  2184   {$$ = NULL;
  2184   {$$ = NULL;
  2185 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid value for seconds in daytime.");
  2185 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid value for seconds in daytime.");
  2186 	 yyerrok;
  2186 	 yyerrok;
  2187 	}
  2187 	}
  2188 /* ERROR_CHECK_END */
  2188 /* ERROR_CHECK_END */
  2189 ;
  2189 ;
  2190 
  2190 
  2201 	{$$ = new date_c($2, locloc(@$));}
  2201 	{$$ = new date_c($2, locloc(@$));}
  2202 /* ERROR_CHECK_BEGIN */
  2202 /* ERROR_CHECK_BEGIN */
  2203 | DATE date_literal
  2203 | DATE date_literal
  2204 	{$$ = NULL;
  2204 	{$$ = NULL;
  2205 	 yynerrs++;
  2205 	 yynerrs++;
  2206 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between 'DATE' and date literal in date.");
  2206 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between 'DATE' and date literal in date.");
  2207 	}
  2207 	}
  2208 | DATE error date_literal
  2208 | DATE error date_literal
  2209 	{$$ = NULL;
  2209 	{$$ = NULL;
  2210 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between 'DATE' and date literal in date.");
  2210 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between 'DATE' and date literal in date.");
  2211 	 yyerrok;
  2211 	 yyerrok;
  2212 	}
  2212 	}
  2213 | DATE '#' error
  2213 | DATE '#' error
  2214 	{$$ = NULL;
  2214 	{$$ = NULL;
  2215 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for date.");
  2215 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for date.");
  2216 	 yyerrok;
  2216 	 yyerrok;
  2217 	}
  2217 	}
  2218 | D_SHARP error
  2218 | D_SHARP error
  2219 	{$$ = NULL;
  2219 	{$$ = NULL;
  2220 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for date.");
  2220 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for date.");
  2229 	{$$ = new date_literal_c($1, $3, $5, locloc(@$));}
  2229 	{$$ = new date_literal_c($1, $3, $5, locloc(@$));}
  2230 /* ERROR_CHECK_BEGIN */
  2230 /* ERROR_CHECK_BEGIN */
  2231 | year month '-' day
  2231 | year month '-' day
  2232   {$$ = NULL;
  2232   {$$ = NULL;
  2233 	 yynerrs++;
  2233 	 yynerrs++;
  2234 	 print_err_msg(current_filename, locf(@1), locl(@2), "'-' missing between year and month in date literal.");
  2234 	 print_err_msg(current_filename, locl(@1), locf(@2), "'-' missing between year and month in date literal.");
  2235 	}
  2235 	}
  2236 | year error month '-' day
  2236 | year error month '-' day
  2237   {$$ = NULL;
  2237   {$$ = NULL;
  2238 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '-' between year and month in date literal.");
  2238 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '-' between year and month in date literal.");
  2239 	 yyerrok;
  2239 	 yyerrok;
  2240 	}
  2240 	}
  2241 | year '-' '-' day
  2241 | year '-' '-' day
  2242 	{$$ = NULL;
  2242 	{$$ = NULL;
  2243 	 yynerrs++;
  2243 	 yynerrs++;
  2244 	 print_err_msg(current_filename, locf(@2), locl(@3), "no month defined in date literal.");
  2244 	 print_err_msg(current_filename, locl(@2), locf(@3), "no month defined in date literal.");
  2245 	}
  2245 	}
  2246 | year '-' error '-' day
  2246 | year '-' error '-' day
  2247 	{$$ = NULL;
  2247 	{$$ = NULL;
  2248 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid value for month in date literal.");
  2248 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for month in date literal.");
  2249 	 yyerrok;
  2249 	 yyerrok;
  2250 	}
  2250 	}
  2251 | year '-' month day
  2251 | year '-' month day
  2252   {$$ = NULL;
  2252   {$$ = NULL;
  2253 	 yynerrs++;
  2253 	 yynerrs++;
  2254 	 print_err_msg(current_filename, locf(@3), locl(@4), "':' missing between month and day in date literal.");
  2254 	 print_err_msg(current_filename, locl(@3), locf(@4), "':' missing between month and day in date literal.");
  2255 	}
  2255 	}
  2256 | year ':' month error day
  2256 | year ':' month error day
  2257   {$$ = NULL;
  2257   {$$ = NULL;
  2258 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting ':' between month and day in date literal.");
  2258 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting ':' between month and day in date literal.");
  2259 	 yyerrok;
  2259 	 yyerrok;
  2260 	}
  2260 	}
  2261 | year ':' month ':' error
  2261 | year ':' month ':' error
  2262   {$$ = NULL;
  2262   {$$ = NULL;
  2263 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid value for day in date literal.");
  2263 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid value for day in date literal.");
  2264 	 yyerrok;
  2264 	 yyerrok;
  2265 	}
  2265 	}
  2266 /* ERROR_CHECK_END */
  2266 /* ERROR_CHECK_END */
  2267 ;
  2267 ;
  2268 
  2268 
  2277 	{$$ = new date_and_time_c($3, $5, locloc(@$));}
  2277 	{$$ = new date_and_time_c($3, $5, locloc(@$));}
  2278 /* ERROR_CHECK_BEGIN */
  2278 /* ERROR_CHECK_BEGIN */
  2279 | DATE_AND_TIME date_literal '-' daytime
  2279 | DATE_AND_TIME date_literal '-' daytime
  2280 	{$$ = NULL;
  2280 	{$$ = NULL;
  2281 	 yynerrs++;
  2281 	 yynerrs++;
  2282 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between 'DATE_AND_TIME' and date literal in date and time.");
  2282 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between 'DATE_AND_TIME' and date literal in date and time.");
  2283 	}
  2283 	}
  2284 | DATE_AND_TIME error date_literal '-' daytime
  2284 | DATE_AND_TIME error date_literal '-' daytime
  2285 	{$$ = NULL;
  2285 	{$$ = NULL;
  2286 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between 'DATE_AND_TIME' and date literal in date and time.");
  2286 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '#' between 'DATE_AND_TIME' and date literal in date and time.");
  2287 	 yyerrok;
  2287 	 yyerrok;
  2288 	}
  2288 	}
  2289 | DATE_AND_TIME '#' '-' daytime
  2289 | DATE_AND_TIME '#' '-' daytime
  2290 	{$$ = NULL;
  2290 	{$$ = NULL;
  2291 	 yynerrs++;
  2291 	 yynerrs++;
  2292 	 print_err_msg(current_filename, locf(@2), locl(@2), "no value defined for date literal in date and time.");
  2292 	 print_err_msg(current_filename, locl(@2), locf(@3), "no value defined for date literal in date and time.");
  2293 	}
  2293 	}
  2294 | DATE_AND_TIME '#' error '-' daytime
  2294 | DATE_AND_TIME '#' error '-' daytime
  2295 	{$$ = NULL;
  2295 	{$$ = NULL;
  2296 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for date literal in date and time.");
  2296 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for date literal in date and time.");
  2297 	 yyerrok;
  2297 	 yyerrok;
  2298 	}
  2298 	}
  2299 | DATE_AND_TIME '#' date_literal daytime
  2299 | DATE_AND_TIME '#' date_literal daytime
  2300 	{$$ = NULL;
  2300 	{$$ = NULL;
  2301 	 yynerrs++;
  2301 	 yynerrs++;
  2302 	 print_err_msg(current_filename, locf(@2), locl(@2), "'-' missing between date literal and daytime in date and time.");
  2302 	 print_err_msg(current_filename, locl(@3), locf(@4), "'-' missing between date literal and daytime in date and time.");
  2303 	}
  2303 	}
  2304 | DATE_AND_TIME '#' date_literal error daytime
  2304 | DATE_AND_TIME '#' date_literal error daytime
  2305 	{$$ = NULL;
  2305 	{$$ = NULL;
  2306 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '-' between date literal and daytime in date and time.");
  2306 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting '-' between date literal and daytime in date and time.");
  2307 	 yyerrok;
  2307 	 yyerrok;
  2308 	}
  2308 	}
  2309 | DATE_AND_TIME '#' date_literal '-' error
  2309 | DATE_AND_TIME '#' date_literal '-' error
  2310 	{$$ = NULL;
  2310 	{$$ = NULL;
  2311 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for daytime in date and time.");
  2311 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid value for daytime in date and time.");
  2312 	 yyerrok;
  2312 	 yyerrok;
  2313 	}
  2313 	}
  2314 /* ERROR_CHECK_END */
  2314 /* ERROR_CHECK_END */
  2315 ;
  2315 ;
  2316 
  2316 
  2477 	{$$ = new data_type_declaration_c($2, locloc(@$));}
  2477 	{$$ = new data_type_declaration_c($2, locloc(@$));}
  2478 /* ERROR_CHECK_BEGIN */
  2478 /* ERROR_CHECK_BEGIN */
  2479 | TYPE END_TYPE
  2479 | TYPE END_TYPE
  2480 	{$$ = NULL;
  2480 	{$$ = NULL;
  2481 	 yynerrs++;
  2481 	 yynerrs++;
  2482 	 print_err_msg(current_filename, locf(@1), locl(@2), "no data type declared in data type(s) declaration.");
  2482 	 print_err_msg(current_filename, locl(@1), locf(@2), "no data type declared in data type(s) declaration.");
  2483 	}
  2483 	}
  2484 | TYPE error type_declaration_list END_TYPE
  2484 | TYPE error type_declaration_list END_TYPE
  2485 	{$$ = NULL;
  2485 	{$$ = NULL;
  2486 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'TYPE' in data type(s) declaration.");
  2486 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'TYPE' in data type(s) declaration.");
  2487 	 yyerrok;
  2487 	 yyerrok;
  2488 	}
  2488 	}
  2489 | TYPE error END_TYPE
  2489 | TYPE error END_TYPE
  2490 	{$$ = NULL;
  2490 	{$$ = NULL;
  2491 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in data type(s) declaration.");
  2491 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in data type(s) declaration.");
  2492 	 yyerrok;
  2492 	 yyerrok;
  2493 	}
  2493 	}
  2494 /* ERROR_CHECK_END */
  2494 /* ERROR_CHECK_END */
  2495 ;
  2495 ;
  2496 
  2496 
  2499   type_declaration ';'
  2499   type_declaration ';'
  2500 	{$$ = new type_declaration_list_c(locloc(@$)); $$->add_element($1);}
  2500 	{$$ = new type_declaration_list_c(locloc(@$)); $$->add_element($1);}
  2501 | type_declaration_list type_declaration ';'
  2501 | type_declaration_list type_declaration ';'
  2502 	{$$ = $1; $$->add_element($2);}
  2502 	{$$ = $1; $$->add_element($2);}
  2503 /* ERROR_CHECK_BEGIN */
  2503 /* ERROR_CHECK_BEGIN */
       
  2504 | error ';'
       
  2505 	{$$ = new type_declaration_list_c(locloc(@$));
       
  2506 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid data type declaration.");
       
  2507 	 yyerrok;
       
  2508 	}
  2504 | type_declaration error
  2509 | type_declaration error
  2505 	{$$ = NULL;
  2510 	{$$ = new type_declaration_list_c(locloc(@$));
  2506 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of data type declaration.");
  2511 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of data type declaration.");
  2507 	 yyerrok;
  2512 	 yyerrok;
  2508 	}
  2513 	}
  2509 | type_declaration_list type_declaration error
  2514 | type_declaration_list type_declaration error
  2510 	{$$ = NULL;
  2515 	{$$ = $1;
  2511 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of data type declaration.");
  2516 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of data type declaration.");
  2512 	 yyerrok;
  2517 	 yyerrok;
  2513 	}
  2518 	}
  2514 | type_declaration_list error ';'
  2519 | type_declaration_list error ';'
  2515 	{$$ = NULL;
  2520 	{$$ = $1;
  2516 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid data type declaration.");
  2521 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid data type declaration.");
  2517 	 yyerrok;
  2522 	 yyerrok;
  2518 	}
  2523 	}
  2519 | type_declaration_list ';'
  2524 | type_declaration_list ';'
  2520 	{$$ = NULL;
  2525 	{$$ = $1;
  2521 	 yynerrs++;
  2526 	 yynerrs++;
  2522 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after data type declaration.");
  2527 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after data type declaration.");
  2523 	}
  2528 	}
  2524 /* ERROR_CHECK_END */
  2529 /* ERROR_CHECK_END */
  2525 ;
  2530 ;
  2545 	}
  2550 	}
  2546 /* ERROR_CHECK_BEGIN */
  2551 /* ERROR_CHECK_BEGIN */
  2547 | identifier simple_spec_init
  2552 | identifier simple_spec_init
  2548 	{$$ = NULL;
  2553 	{$$ = NULL;
  2549 	 yynerrs++;
  2554 	 yynerrs++;
  2550 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between data type name and specification in simple type declaration.");
  2555 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between data type name and specification in simple type declaration.");
  2551 	}
  2556 	}
  2552 | identifier ':' identifier
  2557 | identifier ':' identifier
  2553 	{$$ = NULL;
  2558 	{$$ = NULL;
  2554 	 yynerrs++;
  2559 	 yynerrs++;
  2555 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown data type defined in specification for data type declaration.");
  2560 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown data type defined in specification for data type declaration.");
  2556 	}
  2561 	}
  2557 | identifier ':' error
  2562 | identifier ':' error
  2558 	{$$ = NULL;
  2563 	{$$ = NULL;
  2559 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in data type declaration.");
  2564 	 print_err_msg(current_filename, locf(@3), locl(@3), "no specification defined in data type declaration.");
  2560 	 yyerrok;
  2565 	 yyerrok;
  2561 	}
  2566 	}
  2562 /* ERROR_CHECK_END */
  2567 /* ERROR_CHECK_END */
  2563 ;
  2568 ;
  2564 
  2569 
  2580 	{$$ = new simple_spec_init_c($1, $3, locloc(@$));}
  2585 	{$$ = new simple_spec_init_c($1, $3, locloc(@$));}
  2581 /* ERROR_CHECK_BEGIN */
  2586 /* ERROR_CHECK_BEGIN */
  2582 | elementary_type_name constant
  2587 | elementary_type_name constant
  2583 	{$$ = NULL;
  2588 	{$$ = NULL;
  2584 	 yynerrs++;
  2589 	 yynerrs++;
  2585 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in specification with initialization.");
  2590 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in specification with initialization.");
  2586 	}
  2591 	}
  2587 | prev_declared_simple_type_name constant
  2592 | prev_declared_simple_type_name constant
  2588 	{$$ = NULL;
  2593 	{$$ = NULL;
  2589 	 yynerrs++;
  2594 	 yynerrs++;
  2590 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in specification with initialization.");
  2595 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in specification with initialization.");
  2591 	}
  2596 	}
  2592 | identifier ASSIGN constant
  2597 | identifier ASSIGN constant
  2593 	{$$ = NULL;
  2598 	{$$ = NULL;
  2594 	 yynerrs++;
  2599 	 yynerrs++;
  2595 	 print_err_msg(current_filename, locf(@1), locl(@1), "unknown type defined in specification.");
  2600 	 print_err_msg(current_filename, locf(@1), locl(@1), "unknown type defined in specification.");
  2625 	}
  2630 	}
  2626 /* ERROR_CHECK_BEGIN */
  2631 /* ERROR_CHECK_BEGIN */
  2627 | identifier subrange_spec_init
  2632 | identifier subrange_spec_init
  2628 	{$$ = NULL;
  2633 	{$$ = NULL;
  2629 	 yynerrs++;
  2634 	 yynerrs++;
  2630 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between data type name and specification in subrange type declaration.");
  2635 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between data type name and specification in subrange type declaration.");
  2631 	}
  2636 	}
  2632 /* ERROR_CHECK_END */
  2637 /* ERROR_CHECK_END */
  2633 ;
  2638 ;
  2634 
  2639 
  2635 subrange_spec_init:
  2640 subrange_spec_init:
  2639 	{$$ = new subrange_spec_init_c($1, $3, locloc(@$));}
  2644 	{$$ = new subrange_spec_init_c($1, $3, locloc(@$));}
  2640 /* ERROR_CHECK_BEGIN */
  2645 /* ERROR_CHECK_BEGIN */
  2641 | subrange_specification signed_integer
  2646 | subrange_specification signed_integer
  2642 	{$$ = NULL;
  2647 	{$$ = NULL;
  2643 	 yynerrs++;
  2648 	 yynerrs++;
  2644 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in subrange specification with initialization.");
  2649 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in subrange specification with initialization.");
  2645 	}
  2650 	}
  2646 /* ERROR_CHECK_END */
  2651 /* ERROR_CHECK_END */
  2647 ;
  2652 ;
  2648 
  2653 
  2649 subrange_specification:
  2654 subrange_specification:
  2653   {$$ = new subrange_specification_c($1, NULL, locloc(@$));}
  2658   {$$ = new subrange_specification_c($1, NULL, locloc(@$));}
  2654 /* ERROR_CHECK_BEGIN */
  2659 /* ERROR_CHECK_BEGIN */
  2655 | integer_type_name '(' ')'
  2660 | integer_type_name '(' ')'
  2656 	{$$ = NULL;
  2661 	{$$ = NULL;
  2657 	 yynerrs++;
  2662 	 yynerrs++;
  2658 	 print_err_msg(current_filename, locf(@2), locl(@3), "no subrange defined in subrange specification.");
  2663 	 print_err_msg(current_filename, locl(@2), locf(@3), "no subrange defined in subrange specification.");
  2659 	}
  2664 	}
  2660 | integer_type_name '(' error ')'
  2665 | integer_type_name '(' error ')'
  2661 	{$$ = NULL;
  2666 	{$$ = NULL;
  2662 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid subrange defined in subrange specification.");
  2667 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid subrange defined in subrange specification.");
  2663 	 yyerrok;
  2668 	 yyerrok;
  2664 	}
  2669 	}
  2665 | integer_type_name '(' subrange error
  2670 | integer_type_name '(' subrange error
  2666 	{$$ = NULL;
  2671 	{$$ = NULL;
  2667 	 print_err_msg(current_filename, locf(@3), locl(@3), "')' missing after subrange defined in subrange specification.");
  2672 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing after subrange defined in subrange specification.");
  2668 	 yyerrok;
  2673 	 yyerrok;
  2669 	}
  2674 	}
  2670 /* ERROR_CHECK_END */
  2675 /* ERROR_CHECK_END */
  2671 ;
  2676 ;
  2672 
  2677 
  2676 	{$$ = new subrange_c($1, $3, locloc(@$));}
  2681 	{$$ = new subrange_c($1, $3, locloc(@$));}
  2677 /* ERROR_CHECK_BEGIN */
  2682 /* ERROR_CHECK_BEGIN */
  2678 | signed_integer signed_integer
  2683 | signed_integer signed_integer
  2679 	{$$ = NULL;
  2684 	{$$ = NULL;
  2680 	 yynerrs++;
  2685 	 yynerrs++;
  2681 	 print_err_msg(current_filename, locf(@1), locl(@2), "'..' missing between bounds in subrange definition.");
  2686 	 print_err_msg(current_filename, locl(@1), locf(@2), "'..' missing between bounds in subrange definition.");
  2682 	}
  2687 	}
  2683 | signed_integer error signed_integer
  2688 | signed_integer error signed_integer
  2684 	{$$ = NULL;
  2689 	{$$ = NULL;
  2685 	 yynerrs++;
  2690 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '..' between bounds in subrange definition.");
  2686 	 print_err_msg(current_filename, locf(@1), locl(@2), "expecting '..' between bounds in subrange definition.");
  2691 	 yyerrok;
  2687 	}
  2692 	}
  2688 | signed_integer DOTDOT error
  2693 | signed_integer DOTDOT error
  2689 	{$$ = NULL;
  2694 	{$$ = NULL;
  2690 	 yynerrs++;
  2695 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for upper bound in subrange definition.");
  2691 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid value for upper bound in subrange definition.");
  2696 	 yyerrok;
  2692 	}
  2697 	}
  2693 /* ERROR_CHECK_END */
  2698 /* ERROR_CHECK_END */
  2694 ;
  2699 ;
  2695 
  2700 
  2696 enumerated_type_declaration:
  2701 enumerated_type_declaration:
  2701 	}
  2706 	}
  2702 /* ERROR_CHECK_BEGIN */
  2707 /* ERROR_CHECK_BEGIN */
  2703 | identifier enumerated_spec_init
  2708 | identifier enumerated_spec_init
  2704 	{$$ = NULL;
  2709 	{$$ = NULL;
  2705 	 yynerrs++;
  2710 	 yynerrs++;
  2706 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between data type name and specification in enumerated type declaration.");
  2711 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between data type name and specification in enumerated type declaration.");
  2707 	}
  2712 	}
  2708 /* ERROR_CHECK_END */
  2713 /* ERROR_CHECK_END */
  2709 ;
  2714 ;
  2710 
  2715 
  2711 
  2716 
  2716 	{$$ = new enumerated_spec_init_c($1, $3, locloc(@$));}
  2721 	{$$ = new enumerated_spec_init_c($1, $3, locloc(@$));}
  2717 /* ERROR_CHECK_BEGIN */
  2722 /* ERROR_CHECK_BEGIN */
  2718 | enumerated_specification enumerated_value
  2723 | enumerated_specification enumerated_value
  2719 	{$$ = NULL;
  2724 	{$$ = NULL;
  2720 	 yynerrs++;
  2725 	 yynerrs++;
  2721 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in enumerated specification with initialization.");
  2726 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in enumerated specification with initialization.");
  2722 	}
  2727 	}
  2723 /* ERROR_CHECK_END */
  2728 /* ERROR_CHECK_END */
  2724 ;
  2729 ;
  2725 
  2730 
  2726 enumerated_specification:
  2731 enumerated_specification:
  2729 | prev_declared_enumerated_type_name
  2734 | prev_declared_enumerated_type_name
  2730 /* ERROR_CHECK_BEGIN */
  2735 /* ERROR_CHECK_BEGIN */
  2731 | '(' ')'
  2736 | '(' ')'
  2732 	{$$ = NULL;
  2737 	{$$ = NULL;
  2733 	 yynerrs++;
  2738 	 yynerrs++;
  2734 	 print_err_msg(current_filename, locf(@1), locl(@2), "no enumerated value list defined in enumerated specification.");
  2739 	 print_err_msg(current_filename, locl(@1), locf(@2), "no enumerated value list defined in enumerated specification.");
  2735 	}
  2740 	}
  2736 | '(' error ')'
  2741 | '(' error ')'
  2737 	{$$ = NULL;
  2742 	{$$ = NULL;
  2738 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid enumerated value list defined in enumerated specification.");
  2743 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid enumerated value list defined in enumerated specification.");
  2739 	 yyerrok;
  2744 	 yyerrok;
  2740 	}
  2745 	}
  2741 | '(' enumerated_value_list error
  2746 | '(' enumerated_value_list error
  2742 	{$$ = NULL;
  2747 	{$$ = NULL;
  2743 	 print_err_msg(current_filename, locf(@2), locl(@2), "')' missing at the end of enumerated specification.");
  2748 	 print_err_msg(current_filename, locl(@2), locf(@3), "')' missing at the end of enumerated specification.");
  2744 	 yyerrok;
  2749 	 yyerrok;
  2745 	}
  2750 	}
  2746 /* ERROR_CHECK_END */
  2751 /* ERROR_CHECK_END */
  2747 ;
  2752 ;
  2748 
  2753 
  2752 	{$$ = new enumerated_value_list_c(locloc(@$)); $$->add_element($1);}
  2757 	{$$ = new enumerated_value_list_c(locloc(@$)); $$->add_element($1);}
  2753 | enumerated_value_list ',' enumerated_value
  2758 | enumerated_value_list ',' enumerated_value
  2754 	{$$ = $1; $$->add_element($3);}
  2759 	{$$ = $1; $$->add_element($3);}
  2755 /* ERROR_CHECK_BEGIN */
  2760 /* ERROR_CHECK_BEGIN */
  2756 | enumerated_value_list enumerated_value
  2761 | enumerated_value_list enumerated_value
  2757 	{$$ = NULL;
  2762 	{$$ = $1;
  2758 	 yynerrs++;
  2763 	 yynerrs++;
  2759 	 print_err_msg(current_filename, locf(@1), locl(@2), "',' missing in enumerated value list.");
  2764 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in enumerated value list.");
  2760 	}
  2765 	}
  2761 | enumerated_value_list ',' error
  2766 | enumerated_value_list ',' error
  2762 	{$$ = NULL;
  2767 	{$$ = $1;
  2763 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid value in enumerated value list.");
  2768 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value in enumerated value list.");
  2764 	 yyerrok;
  2769 	 yyerrok;
  2765 	}
  2770 	}
  2766 /* ERROR_CHECK_END */
  2771 /* ERROR_CHECK_END */
  2767 ;
  2772 ;
  2768 
  2773 
  2774 	{$$ = new enumerated_value_c($1, $3, locloc(@$));}
  2779 	{$$ = new enumerated_value_c($1, $3, locloc(@$));}
  2775 /* ERROR_CHECK_BEGIN */
  2780 /* ERROR_CHECK_BEGIN */
  2776 | prev_declared_enumerated_type_name any_identifier
  2781 | prev_declared_enumerated_type_name any_identifier
  2777 	{$$ = NULL;
  2782 	{$$ = NULL;
  2778 	 yynerrs++;
  2783 	 yynerrs++;
  2779 	 print_err_msg(current_filename, locf(@1), locl(@2), "'#' missing between enumerated type name and value in enumerated literal.");
  2784 	 print_err_msg(current_filename, locl(@1), locf(@2), "'#' missing between enumerated type name and value in enumerated literal.");
  2780 	}
  2785 	}
  2781 | prev_declared_enumerated_type_name error any_identifier
  2786 | prev_declared_enumerated_type_name error any_identifier
  2782 	{$$ = NULL;
  2787 	{$$ = NULL;
  2783 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '#' between enumerated type name and value in enumerated literal.");
  2788 	 print_err_msg(current_filename, locl(@1), locf(@3), "expecting '#' between enumerated type name and value in enumerated literal.");
  2784 	 yyerrok;
  2789 	 yyerrok;
  2785 	}
  2790 	}
  2786 | prev_declared_enumerated_type_name '#' error
  2791 | prev_declared_enumerated_type_name '#' error
  2787 	{$$ = NULL;
  2792 	{$$ = NULL;
  2788 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for enumerated literal.");
  2793 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for enumerated literal.");
  2789 	 yyerrok;
  2794 	 yyerrok;
  2790 	}
  2795 	}
  2791 | identifier '#' any_identifier
  2796 | identifier '#' any_identifier
  2792 	{$$ = NULL;
  2797 	{$$ = NULL;
  2793 	 yynerrs++;
  2798 	 yynerrs++;
  2813 	}
  2818 	}
  2814 /* ERROR_CHECK_BEGIN */
  2819 /* ERROR_CHECK_BEGIN */
  2815 | identifier array_spec_init
  2820 | identifier array_spec_init
  2816 	{$$ = NULL;
  2821 	{$$ = NULL;
  2817 	 yynerrs++;
  2822 	 yynerrs++;
  2818 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between data type name and specification in array type declaration.");
  2823 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between data type name and specification in array type declaration.");
  2819 	}
  2824 	}
  2820 /* ERROR_CHECK_END */
  2825 /* ERROR_CHECK_END */
  2821 ;
  2826 ;
  2822 
  2827 
  2823 array_spec_init:
  2828 array_spec_init:
  2827 	{$$ = new array_spec_init_c($1, $3, locloc(@$));}
  2832 	{$$ = new array_spec_init_c($1, $3, locloc(@$));}
  2828 /* ERROR_CHECK_BEGIN */
  2833 /* ERROR_CHECK_BEGIN */
  2829 | array_specification array_initialization
  2834 | array_specification array_initialization
  2830 	{$$ = NULL;
  2835 	{$$ = NULL;
  2831 	 yynerrs++;
  2836 	 yynerrs++;
  2832 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in array specification with initialization.");
  2837 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in array specification with initialization.");
  2833 	}
  2838 	}
  2834 /* ERROR_CHECK_END */
  2839 /* ERROR_CHECK_END */
  2835 ;
  2840 ;
  2836 
  2841 
  2837 
  2842 
  2841 	{$$ = new array_specification_c($3, $6, locloc(@$));}
  2846 	{$$ = new array_specification_c($3, $6, locloc(@$));}
  2842 /* ERROR_CHECK_BEGIN */
  2847 /* ERROR_CHECK_BEGIN */
  2843 | ARRAY array_subrange_list ']' OF non_generic_type_name
  2848 | ARRAY array_subrange_list ']' OF non_generic_type_name
  2844 	{$$ = NULL;
  2849 	{$$ = NULL;
  2845 	 yynerrs++;
  2850 	 yynerrs++;
  2846 	 print_err_msg(current_filename, locf(@1), locl(@2), "'[' missing before subrange list in array specification.");
  2851 	 print_err_msg(current_filename, locl(@1), locf(@2), "'[' missing before subrange list in array specification.");
  2847 	}
  2852 	}
  2848 | ARRAY error array_subrange_list ']' OF non_generic_type_name
  2853 | ARRAY error array_subrange_list ']' OF non_generic_type_name
  2849 	{$$ = NULL;
  2854 	{$$ = NULL;
  2850 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '[' after 'ARRAY' in array specification.");
  2855 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '[' after 'ARRAY' in array specification.");
  2851 	 yyerrok;
  2856 	 yyerrok;
  2852 	}
  2857 	}
  2853 | ARRAY '[' ']' OF non_generic_type_name
  2858 | ARRAY '[' ']' OF non_generic_type_name
  2854 	{$$ = NULL;
  2859 	{$$ = NULL;
  2855 	 yynerrs++;
  2860 	 yynerrs++;
  2856 	 print_err_msg(current_filename, locf(@2), locl(@3), "no subrange list defined in array specification.");
  2861 	 print_err_msg(current_filename, locl(@2), locf(@3), "no subrange list defined in array specification.");
  2857 	}
  2862 	}
  2858 | ARRAY '[' error ']' OF non_generic_type_name
  2863 | ARRAY '[' error ']' OF non_generic_type_name
  2859 	{$$ = NULL;
  2864 	{$$ = NULL;
  2860 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid subrange list defined in array specification.");
  2865 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid subrange list defined in array specification.");
  2861 	 yyerrok;
  2866 	 yyerrok;
  2862 	}
  2867 	}
  2863 | ARRAY OF non_generic_type_name
  2868 | ARRAY OF non_generic_type_name
  2864 	{$$ = NULL;
  2869 	{$$ = NULL;
  2865 	 yynerrs++;
  2870 	 yynerrs++;
  2866 	 print_err_msg(current_filename, locf(@1), locl(@2), "no subrange list defined in array specification.");
  2871 	 print_err_msg(current_filename, locl(@1), locf(@2), "no subrange list defined in array specification.");
  2867 	}
  2872 	}
  2868 | ARRAY error OF non_generic_type_name
  2873 | ARRAY error OF non_generic_type_name
  2869 	{$$ = NULL;
  2874 	{$$ = NULL;
  2870 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid subrange list defined in array specification.");
  2875 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid subrange list defined in array specification.");
  2871 	 yyerrok;
  2876 	 yyerrok;
  2872 	}
  2877 	}
  2873 | ARRAY '[' array_subrange_list OF non_generic_type_name
  2878 | ARRAY '[' array_subrange_list OF non_generic_type_name
  2874 	{$$ = NULL;
  2879 	{$$ = NULL;
  2875 	 yynerrs++;
  2880 	 yynerrs++;
  2876 	 print_err_msg(current_filename, locf(@3), locl(@4), "']' missing after subrange list in array specification.");
  2881 	 print_err_msg(current_filename, locl(@3), locf(@4), "']' missing after subrange list in array specification.");
  2877 	}
  2882 	}
  2878 | ARRAY '[' array_subrange_list error OF non_generic_type_name
  2883 | ARRAY '[' array_subrange_list error OF non_generic_type_name
  2879 	{$$ = NULL;
  2884 	{$$ = NULL;
  2880 	 yynerrs++;
  2885 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting '[' after subrange list in array specification.");
  2881 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting '[' after subrange list in array specification.");
  2886 	 yyerrok;
  2882 	}
  2887 	}
  2883 | ARRAY '[' array_subrange_list ']' non_generic_type_name
  2888 | ARRAY '[' array_subrange_list ']' non_generic_type_name
  2884 	{$$ = NULL;
  2889 	{$$ = NULL;
  2885 	 yynerrs++;
  2890 	 yynerrs++;
  2886 	 print_err_msg(current_filename, locf(@4), locl(@5), "'OF' missing between subrange list and item type name in array specification.");
  2891 	 print_err_msg(current_filename, locl(@4), locf(@5), "'OF' missing between subrange list and item type name in array specification.");
  2887 	}
  2892 	}
  2888 | ARRAY '[' array_subrange_list ']' error non_generic_type_name
  2893 | ARRAY '[' array_subrange_list ']' error non_generic_type_name
  2889 	{$$ = NULL;
  2894 	{$$ = NULL;
  2890 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting 'OF' between subrange list and item type name in array specification.");
  2895 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting 'OF' between subrange list and item type name in array specification.");
  2891 	 yyerrok;
  2896 	 yyerrok;
  2892 	}
  2897 	}
  2893 | ARRAY '[' array_subrange_list ']' OF error
  2898 | ARRAY '[' array_subrange_list ']' OF error
  2894 	{$$ = NULL;
  2899 	{$$ = NULL;
  2895 	 print_err_msg(current_filename, locf(@1), locl(@3), "no itme data type defined in array specification.");
  2900 	 print_err_msg(current_filename, locf(@6), locl(@6), "no item data type defined in array specification.");
  2896 	 yyerrok;
  2901 	 yyerrok;
  2897 	}
  2902 	}
  2898 /* ERROR_CHECK_END */
  2903 /* ERROR_CHECK_END */
  2899 ;
  2904 ;
  2900 
  2905 
  2904 	{$$ = new array_subrange_list_c(locloc(@$)); $$->add_element($1);}
  2909 	{$$ = new array_subrange_list_c(locloc(@$)); $$->add_element($1);}
  2905 | array_subrange_list ',' subrange
  2910 | array_subrange_list ',' subrange
  2906 	{$$ = $1; $$->add_element($3);}
  2911 	{$$ = $1; $$->add_element($3);}
  2907 /* ERROR_CHECK_BEGIN */
  2912 /* ERROR_CHECK_BEGIN */
  2908 | array_subrange_list subrange
  2913 | array_subrange_list subrange
  2909 	{$$ = NULL;
  2914 	{$$ = $1;
  2910 	 yynerrs++;
  2915 	 yynerrs++;
  2911 	 print_err_msg(current_filename, locf(@1), locl(@2), "',' missing in subrange list.");
  2916 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in subrange list.");
  2912 	}
  2917 	}
  2913 | array_subrange_list ',' error
  2918 | array_subrange_list ',' error
  2914 	{$$ = NULL;
  2919 	{$$ = $1;
  2915 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid subrange in subrange list.");
  2920 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid subrange in subrange list.");
  2916 	 yyerrok;
  2921 	 yyerrok;
  2917 	}
  2922 	}
  2918 /* ERROR_CHECK_END */
  2923 /* ERROR_CHECK_END */
  2919 ;
  2924 ;
  2920 
  2925 
  2924 	{$$ = $2;}
  2929 	{$$ = $2;}
  2925 /* ERROR_CHECK_BEGIN */
  2930 /* ERROR_CHECK_BEGIN */
  2926 | '[' ']'
  2931 | '[' ']'
  2927 	{$$ = NULL;
  2932 	{$$ = NULL;
  2928 	 yynerrs++;
  2933 	 yynerrs++;
  2929 	 print_err_msg(current_filename, locf(@1), locl(@2), "no initial values list defined in array initialization.");
  2934 	 print_err_msg(current_filename, locl(@1), locf(@2), "no initial values list defined in array initialization.");
  2930 	}
  2935 	}
  2931 | '[' error ']'
  2936 | '[' error ']'
  2932 	{$$ = NULL;
  2937 	{$$ = NULL;
  2933 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid initial values list defined in array initialization.");
  2938 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid initial values list defined in array initialization.");
  2934 	 yyerrok;
  2939 	 yyerrok;
  2935 	}
  2940 	}
  2936 | '[' array_initial_elements_list error
  2941 | '[' array_initial_elements_list error
  2937 	{$$ = NULL;
  2942 	{$$ = NULL;
  2938 	 print_err_msg(current_filename, locf(@1), locl(@2), "']' missing at the end of array initialization.");
  2943 	 print_err_msg(current_filename, locl(@2), locf(@3), "']' missing at the end of array initialization.");
  2939 	 yyerrok;
  2944 	 yyerrok;
  2940 	}
  2945 	}
  2941 /* ERROR_CHECK_END */
  2946 /* ERROR_CHECK_END */
  2942 ;
  2947 ;
  2943 
  2948 
  2948 	{$$ = new array_initial_elements_list_c(locloc(@$)); $$->add_element($1);}
  2953 	{$$ = new array_initial_elements_list_c(locloc(@$)); $$->add_element($1);}
  2949 | array_initial_elements_list ',' array_initial_elements
  2954 | array_initial_elements_list ',' array_initial_elements
  2950 	{$$ = $1; $$->add_element($3);}
  2955 	{$$ = $1; $$->add_element($3);}
  2951 /* ERROR_CHECK_BEGIN 
  2956 /* ERROR_CHECK_BEGIN 
  2952 | array_initial_elements_list ',' error
  2957 | array_initial_elements_list ',' error
  2953 	{$$ = NULL;
  2958 	{$$ = $1;
  2954 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid array initial value in array initial values list.");
  2959 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid array initial value in array initial values list.");
  2955 	 yyerrok;
  2960 	 yyerrok;
  2956 	}
  2961 	}
  2957 /* ERROR_CHECK_END */
  2962 /* ERROR_CHECK_END */
  2958 ;
  2963 ;
  2959 
  2964 
  2964 | integer '(' array_initial_element ')'
  2969 | integer '(' array_initial_element ')'
  2965 	{$$ = new array_initial_elements_c($1, $3, locloc(@$));}
  2970 	{$$ = new array_initial_elements_c($1, $3, locloc(@$));}
  2966 /* ERROR_CHECK_BEGIN 
  2971 /* ERROR_CHECK_BEGIN 
  2967 | integer '(' error ')'
  2972 | integer '(' error ')'
  2968 	{$$ = NULL;
  2973 	{$$ = NULL;
  2969 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid array initial value in array initial values list.");
  2974 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid array initial value in array initial values list.");
  2970 	 yyerrok;
  2975 	 yyerrok;
  2971 	}
  2976 	}
  2972 | integer '(' array_initial_element error
  2977 | integer '(' array_initial_element error
  2973 	{$$ = NULL;
  2978 	{$$ = NULL;
  2974 	 print_err_msg(current_filename, locf(@2), locl(@4), "')' missing at the end of array initial value in array initial values list.");
  2979 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing at the end of array initial value in array initial values list.");
  2975 	 yyerrok;
  2980 	 yyerrok;
  2976 	}
  2981 	}
  2977 /* ERROR_CHECK_END */
  2982 /* ERROR_CHECK_END */
  2978 ;
  2983 ;
  2979 
  2984 
  2995 	}
  3000 	}
  2996 /* ERROR_CHECK_BEGIN */
  3001 /* ERROR_CHECK_BEGIN */
  2997 | identifier structure_specification
  3002 | identifier structure_specification
  2998 	{$$ = NULL;
  3003 	{$$ = NULL;
  2999 	 yynerrs++;
  3004 	 yynerrs++;
  3000 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing between data type name and specification in structure type declaration.");
  3005 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between data type name and specification in structure type declaration.");
  3001 	}
  3006 	}
  3002 /* ERROR_CHECK_END */
  3007 /* ERROR_CHECK_END */
  3003 ;
  3008 ;
  3004 
  3009 
  3005 
  3010 
  3016 	{$$ = new initialized_structure_c($1, $3, locloc(@$));}
  3021 	{$$ = new initialized_structure_c($1, $3, locloc(@$));}
  3017 /* ERROR_CHECK_BEGIN */
  3022 /* ERROR_CHECK_BEGIN */
  3018 | prev_declared_structure_type_name structure_initialization
  3023 | prev_declared_structure_type_name structure_initialization
  3019 	{$$ = NULL;
  3024 	{$$ = NULL;
  3020 	 yynerrs++;
  3025 	 yynerrs++;
  3021 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in structure specification with initialization.");
  3026 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in structure specification with initialization.");
  3022 	}
  3027 	}
  3023 | identifier ASSIGN structure_initialization
  3028 | identifier ASSIGN structure_initialization
  3024 	{$$ = NULL;
  3029 	{$$ = NULL;
  3025 	 yynerrs++;
  3030 	 yynerrs++;
  3026 	 print_err_msg(current_filename, locf(@1), locl(@2), "unknown type name for structure specification with initialization.");
  3031 	 print_err_msg(current_filename, locf(@1), locl(@1), "unknown type name for structure specification with initialization.");
  3027 	}
  3032 	}
  3028 /* ERROR_CHECK_END */
  3033 /* ERROR_CHECK_END */
  3029 ;
  3034 ;
  3030 
  3035 
  3031 
  3036 
  3034 	{$$ = $2;}
  3039 	{$$ = $2;}
  3035 /* ERROR_CHECK_BEGIN */
  3040 /* ERROR_CHECK_BEGIN */
  3036 | STRUCT END_STRUCT
  3041 | STRUCT END_STRUCT
  3037 	{$$ = NULL;
  3042 	{$$ = NULL;
  3038 	 yynerrs++;
  3043 	 yynerrs++;
  3039 	 print_err_msg(current_filename, locf(@1), locl(@2), "no structure element declared in structure type declaration.");
  3044 	 print_err_msg(current_filename, locl(@1), locf(@2), "no structure element declared in structure type declaration.");
  3040 	}
  3045 	}
  3041 | STRUCT error structure_element_declaration_list END_STRUCT
  3046 | STRUCT error structure_element_declaration_list END_STRUCT
  3042 	{$$ = NULL;
  3047 	{$$ = NULL;
  3043 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'STRUCT' in structure type declaration.");
  3048 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'STRUCT' in structure type declaration.");
  3044 	 yyerrok;
  3049 	 yyerrok;
  3045 	}
  3050 	}
  3046 | STRUCT error END_STRUCT
  3051 | STRUCT error END_STRUCT
  3047 	{$$ = NULL;
  3052 	{$$ = NULL;
  3048 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in structure type declaration.");
  3053 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in structure type declaration.");
  3049 	 yyerrok;
  3054 	 yyerrok;
  3050 	}
  3055 	}
  3051 /* ERROR_CHECK_END */
  3056 /* ERROR_CHECK_END */
  3052 ;
  3057 ;
  3053 
  3058 
  3056   structure_element_declaration ';'
  3061   structure_element_declaration ';'
  3057 	{$$ = new structure_element_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3062 	{$$ = new structure_element_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3058 | structure_element_declaration_list structure_element_declaration ';'
  3063 | structure_element_declaration_list structure_element_declaration ';'
  3059 	{$$ = $1; $$->add_element($2);}
  3064 	{$$ = $1; $$->add_element($2);}
  3060 /* ERROR_CHECK_BEGIN */
  3065 /* ERROR_CHECK_BEGIN */
       
  3066 | error ';'
       
  3067 	{$$ = new structure_element_declaration_list_c(locloc(@$));
       
  3068 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid structure element declaration.");
       
  3069 	 yyerrok;
       
  3070 	}
  3061 | structure_element_declaration error
  3071 | structure_element_declaration error
  3062 	{$$ = NULL;
  3072 	{$$ = new structure_element_declaration_list_c(locloc(@$));
  3063 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of structure element declaration.");
  3073 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of structure element declaration.");
  3064 	 yyerrok;
  3074 	 yyerrok;
  3065 	}
  3075 	}
  3066 | structure_element_declaration_list structure_element_declaration error
  3076 | structure_element_declaration_list structure_element_declaration error
  3067 	{$$ = NULL;
  3077 	{$$ = $1;
  3068 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of structure element declaration.");
  3078 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of structure element declaration.");
  3069 	 yyerrok;
  3079 	 yyerrok;
  3070 	}
  3080 	}
  3071 | structure_element_declaration_list error ';'
  3081 | structure_element_declaration_list error ';'
  3072 	{$$ = NULL;
  3082 	{$$ = $1;
  3073 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid structure element declaration.");
  3083 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid structure element declaration.");
  3074 	 yyerrok;
  3084 	 yyerrok;
  3075 	}
  3085 	}
  3076 | structure_element_declaration_list ';'
  3086 | structure_element_declaration_list ';'
  3077 	{$$ = NULL;
  3087 	{$$ = $1;
  3078 	 yynerrs++;
  3088 	 yynerrs++;
  3079 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after structure element declaration.");
  3089 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after structure element declaration.");
  3080 	}
  3090 	}
  3081 /* ERROR_CHECK_END */
  3091 /* ERROR_CHECK_END */
  3082 ;
  3092 ;
  3095 	{$$ = new structure_element_declaration_c($1, $3, locloc(@$));}
  3105 	{$$ = new structure_element_declaration_c($1, $3, locloc(@$));}
  3096 /* ERROR_CHECK_BEGIN */
  3106 /* ERROR_CHECK_BEGIN */
  3097 | structure_element_name simple_spec_init
  3107 | structure_element_name simple_spec_init
  3098 	{$$ = NULL;
  3108 	{$$ = NULL;
  3099 	 yynerrs++;
  3109 	 yynerrs++;
  3100 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between structure element name and simple specification.");
  3110 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between structure element name and simple specification.");
  3101 	}
  3111 	}
  3102 | structure_element_name subrange_spec_init
  3112 | structure_element_name subrange_spec_init
  3103 	{$$ = NULL;
  3113 	{$$ = NULL;
  3104 	 yynerrs++;
  3114 	 yynerrs++;
  3105 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between structure element name and subrange specification.");
  3115 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between structure element name and subrange specification.");
  3106 	}
  3116 	}
  3107 | structure_element_name enumerated_spec_init
  3117 | structure_element_name enumerated_spec_init
  3108 	{$$ = NULL;
  3118 	{$$ = NULL;
  3109 	 yynerrs++;
  3119 	 yynerrs++;
  3110 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between structure element name and enumerated specification.");
  3120 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between structure element name and enumerated specification.");
  3111 	}
  3121 	}
  3112 | structure_element_name array_spec_init
  3122 | structure_element_name array_spec_init
  3113 	{$$ = NULL;
  3123 	{$$ = NULL;
  3114 	 yynerrs++;
  3124 	 yynerrs++;
  3115 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between structure element name and array specification.");
  3125 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between structure element name and array specification.");
  3116 	}
  3126 	}
  3117 | structure_element_name initialized_structure
  3127 | structure_element_name initialized_structure
  3118 	{$$ = NULL;
  3128 	{$$ = NULL;
  3119 	 yynerrs++;
  3129 	 yynerrs++;
  3120 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between structure element name and structure specification.");
  3130 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between structure element name and structure specification.");
  3121 	}
  3131 	}
  3122 | structure_element_name ':' identifier
  3132 | structure_element_name ':' identifier
  3123 	{$$ = NULL;
  3133 	{$$ = NULL;
  3124 	 yynerrs++;
  3134 	 yynerrs++;
  3125 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown variable type defined in structure element declaration.");
  3135 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown variable type defined in structure element declaration.");
  3126 	}
  3136 	}
  3127 | structure_element_name ':' error
  3137 | structure_element_name ':' error
  3128 	{$$ = NULL;
  3138 	{$$ = NULL;
  3129 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in structure element declaration.");
  3139 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in structure element declaration.");
  3130 	 yyerrok;
  3140 	 yyerrok;
  3131 	}
  3141 	}
  3132 /* ERROR_CHECK_END */
  3142 /* ERROR_CHECK_END */
  3133 ;
  3143 ;
  3134 
  3144 
  3140   '(' structure_element_initialization_list ')'
  3150   '(' structure_element_initialization_list ')'
  3141 	{$$ = $2;}
  3151 	{$$ = $2;}
  3142 /* ERROR_CHECK_BEGIN */
  3152 /* ERROR_CHECK_BEGIN */
  3143 | '(' error ')'
  3153 | '(' error ')'
  3144 	{$$ = NULL;
  3154 	{$$ = NULL;
  3145 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid structure element initialization list in structure initialization.");
  3155 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid structure element initialization list in structure initialization.");
  3146 	 yyerrok;
  3156 	 yyerrok;
  3147 	}
  3157 	}
  3148 | '(' structure_element_initialization_list error
  3158 | '(' structure_element_initialization_list error
  3149 	{$$ = NULL;
  3159 	{$$ = NULL;
  3150 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ')' at the end of structure element initialization list in structure initialization.");
  3160 	 print_err_msg(current_filename, locl(@2), locf(@3), "expecting ')' at the end of structure element initialization list in structure initialization.");
  3151 	 yyerrok;
  3161 	 yyerrok;
  3152 	}
  3162 	}
  3153 /* ERROR_CHECK_END */
  3163 /* ERROR_CHECK_END */
  3154 ;
  3164 ;
  3155 
  3165 
  3159 	{$$ = new structure_element_initialization_list_c(locloc(@$)); $$->add_element($1);}
  3169 	{$$ = new structure_element_initialization_list_c(locloc(@$)); $$->add_element($1);}
  3160 | structure_element_initialization_list ',' structure_element_initialization
  3170 | structure_element_initialization_list ',' structure_element_initialization
  3161 	{$$ = $1; $$->add_element($3);}
  3171 	{$$ = $1; $$->add_element($3);}
  3162 /* ERROR_CHECK_BEGIN 
  3172 /* ERROR_CHECK_BEGIN 
  3163 | structure_element_initialization_list structure_element_initialization
  3173 | structure_element_initialization_list structure_element_initialization
  3164 	{$$ = NULL;
  3174 	{$$ = $1;
  3165 	 yynerrs++;
  3175 	 yynerrs++;
  3166 	 print_err_msg(current_filename, locf(@2), locl(@2), "',' missing in structure element initialization list in structure initialization.");
  3176 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in structure element initialization list in structure initialization.");
  3167 	}
  3177 	}
  3168 | structure_element_initialization_list ',' error
  3178 | structure_element_initialization_list ',' error
  3169 	{$$ = NULL;
  3179 	{$$ = $1;
  3170 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid structure element initialization in structure initialization.");
  3180 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid structure element initialization in structure initialization.");
  3171 	 yyerrok;
  3181 	 yyerrok;
  3172 	}
  3182 	}
  3173 /* ERROR_CHECK_END */
  3183 /* ERROR_CHECK_END */
  3174 ;
  3184 ;
  3175 
  3185 
  3185 	{$$ = new structure_element_initialization_c($1, $3, locloc(@$));}
  3195 	{$$ = new structure_element_initialization_c($1, $3, locloc(@$));}
  3186 /* ERROR_CHECK_BEGIN */
  3196 /* ERROR_CHECK_BEGIN */
  3187 | structure_element_name constant
  3197 | structure_element_name constant
  3188 	{$$ = NULL;
  3198 	{$$ = NULL;
  3189 	 yynerrs++;
  3199 	 yynerrs++;
  3190 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in structure element initialization.");
  3200 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in structure element initialization.");
  3191 	}
  3201 	}
  3192 | structure_element_name enumerated_value
  3202 | structure_element_name enumerated_value
  3193 	{$$ = NULL;
  3203 	{$$ = NULL;
  3194 	 yynerrs++;
  3204 	 yynerrs++;
  3195 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in enumerated structure element initialization.");
  3205 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in enumerated structure element initialization.");
  3196 	}
  3206 	}
  3197 | structure_element_name array_initialization
  3207 | structure_element_name array_initialization
  3198 	{$$ = NULL;
  3208 	{$$ = NULL;
  3199 	 yynerrs++;
  3209 	 yynerrs++;
  3200 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in array structure element initialization.");
  3210 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in array structure element initialization.");
  3201 	}
  3211 	}
  3202 | structure_element_name structure_initialization
  3212 | structure_element_name structure_initialization
  3203 	{$$ = NULL;
  3213 	{$$ = NULL;
  3204 	 yynerrs++;
  3214 	 yynerrs++;
  3205 	 print_err_msg(current_filename, locf(@1), locl(@2), "':=' missing in structured structure element initialization.");
  3215 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing in structured structure element initialization.");
  3206 	}
  3216 	}
  3207 /* ERROR_CHECK_END */
  3217 /* ERROR_CHECK_END */
  3208 ;
  3218 ;
  3209 
  3219 
  3210 /* NOTE: in order to remove a reduce/reduce conflict,
  3220 /* NOTE: in order to remove a reduce/reduce conflict,
  3411 	{$$ = new input_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3421 	{$$ = new input_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3412 /* ERROR_CHECK_BEGIN */
  3422 /* ERROR_CHECK_BEGIN */
  3413 | VAR_INPUT END_VAR
  3423 | VAR_INPUT END_VAR
  3414 	{$$ = NULL;
  3424 	{$$ = NULL;
  3415 	 yynerrs++;
  3425 	 yynerrs++;
  3416 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in input variable(s) declaration.");
  3426 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in input variable(s) declaration.");
  3417 	}
  3427 	}
  3418 | VAR_INPUT RETAIN END_VAR
  3428 | VAR_INPUT RETAIN END_VAR
  3419 	{$$ = NULL;
  3429 	{$$ = NULL;
  3420 	 yynerrs++;
  3430 	 yynerrs++;
  3421 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in retentive input variable(s) declaration.");
  3431 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in retentive input variable(s) declaration.");
  3422 	}
  3432 	}
  3423 | VAR_INPUT NON_RETAIN END_VAR
  3433 | VAR_INPUT NON_RETAIN END_VAR
  3424 	{$$ = NULL;
  3434 	{$$ = NULL;
  3425 	 yynerrs++;
  3435 	 yynerrs++;
  3426 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in non-retentive input variable(s) declaration.");
  3436 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in non-retentive input variable(s) declaration.");
  3427 	}
  3437 	}
  3428 | VAR_INPUT error input_declaration_list END_VAR
  3438 | VAR_INPUT error input_declaration_list END_VAR
  3429 	{$$ = NULL;
  3439 	{$$ = NULL;
  3430 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_INPUT' in input variable(s) declaration.");
  3440 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_INPUT' in input variable(s) declaration.");
  3431 	 yyerrok;
  3441 	 yyerrok;
  3432 	}
  3442 	}
  3433 | VAR_INPUT RETAIN error input_declaration_list END_VAR
  3443 | VAR_INPUT RETAIN error input_declaration_list END_VAR
  3434 	{$$ = NULL;
  3444 	{$$ = NULL;
  3435 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive input variable(s) declaration.");
  3445 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive input variable(s) declaration.");
  3436 	 yyerrok;
  3446 	 yyerrok;
  3437 	}
  3447 	}
  3438 | VAR_INPUT NON_RETAIN error input_declaration_list END_VAR
  3448 | VAR_INPUT NON_RETAIN error input_declaration_list END_VAR
  3439 	{$$ = NULL;
  3449 	{$$ = NULL;
  3440 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive input variable(s) declaration.");
  3450 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive input variable(s) declaration.");
  3441 	 yyerrok;
  3451 	 yyerrok;
  3442 	}
  3452 	}
  3443 | VAR_INPUT error END_VAR
  3453 | VAR_INPUT error END_VAR
  3444 	{$$ = NULL;
  3454 	{$$ = NULL;
  3445 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in input variable(s) declaration.");
  3455 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in input variable(s) declaration.");
  3446 	 yyerrok;
  3456 	 yyerrok;
  3447 	}
  3457 	}
  3448 | VAR_INPUT RETAIN error END_VAR
  3458 | VAR_INPUT RETAIN error END_VAR
  3449 	{$$ = NULL;
  3459 	{$$ = NULL;
  3450 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in retentive input variable(s) declaration.");
  3460 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in retentive input variable(s) declaration.");
  3451 	 yyerrok;
  3461 	 yyerrok;
  3452 	}
  3462 	}
  3453 | VAR_INPUT NON_RETAIN error END_VAR
  3463 | VAR_INPUT NON_RETAIN error END_VAR
  3454 	{$$ = NULL;
  3464 	{$$ = NULL;
  3455 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in non-retentive input variable(s) declaration.");
  3465 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in non-retentive input variable(s) declaration.");
  3456 	 yyerrok;
  3466 	 yyerrok;
  3457 	}
  3467 	}
  3458 /* ERROR_CHECK_END */
  3468 /* ERROR_CHECK_END */
  3459 ;
  3469 ;
  3460 
  3470 
  3463   input_declaration ';'
  3473   input_declaration ';'
  3464 	{$$ = new input_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3474 	{$$ = new input_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3465 | input_declaration_list input_declaration ';'
  3475 | input_declaration_list input_declaration ';'
  3466 	{$$ = $1; $$->add_element($2);}
  3476 	{$$ = $1; $$->add_element($2);}
  3467 /* ERROR_CHECK_BEGIN */
  3477 /* ERROR_CHECK_BEGIN */
       
  3478 | error ';'
       
  3479 	{$$ = new input_declaration_list_c(locloc(@$));
       
  3480 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid input variable(s) declaration.");
       
  3481 	 yyerrok;
       
  3482 	}
  3468 | input_declaration error
  3483 | input_declaration error
  3469 	{$$ = NULL;
  3484 	{$$ = new input_declaration_list_c(locloc(@$));
  3470 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of input variable(s) declaration.");
  3485 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of input variable(s) declaration.");
  3471 	 yyerrok;
  3486 	 yyerrok;
  3472 	}
  3487 	}
  3473 | input_declaration_list input_declaration error
  3488 | input_declaration_list input_declaration error
  3474 	{$$ = NULL;
  3489 	{$$ = $1;
  3475 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of input variable(s) declaration.");
  3490 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of input variable(s) declaration.");
  3476 	 yyerrok;
  3491 	 yyerrok;
  3477 	}
  3492 	}
  3478 | input_declaration_list error ';'
  3493 | input_declaration_list error ';'
  3479 	{$$ = NULL;
  3494 	{$$ = $1;
  3480 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid input variable(s) declaration.");
  3495 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid input variable(s) declaration.");
  3481 	 yyerrok;
  3496 	 yyerrok;
  3482 	}
  3497 	}
  3483 | input_declaration_list ';'
  3498 | input_declaration_list ';'
  3484 	{$$ = NULL;
  3499 	{$$ = $1;
  3485 	 yynerrs++;
  3500 	 yynerrs++;
  3486 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after input variable(s) declaration.");
  3501 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after input variable(s) declaration.");
  3487 	}
  3502 	}
  3488 /* ERROR_CHECK_END */
  3503 /* ERROR_CHECK_END */
  3489 ;
  3504 ;
  3502 	{$$ = new edge_declaration_c(new falling_edge_option_c(locloc(@3)), $1, locloc(@$));}
  3517 	{$$ = new edge_declaration_c(new falling_edge_option_c(locloc(@3)), $1, locloc(@$));}
  3503 /* ERROR_CHECK_BEGIN */
  3518 /* ERROR_CHECK_BEGIN */
  3504 | var1_list BOOL R_EDGE
  3519 | var1_list BOOL R_EDGE
  3505 	{$$ = NULL;
  3520 	{$$ = NULL;
  3506 	 yynerrs++;
  3521 	 yynerrs++;
  3507 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and specification.");
  3522 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and specification.");
  3508 	}
  3523 	}
  3509 | var1_list BOOL F_EDGE
  3524 | var1_list BOOL F_EDGE
  3510 	{$$ = NULL;
  3525 	{$$ = NULL;
  3511 	 yynerrs++;
  3526 	 yynerrs++;
  3512 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and specification.");
  3527 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and specification.");
  3513 	}
  3528 	}
  3514 | var1_list ':' BOOL R_EDGE F_EDGE
  3529 | var1_list ':' BOOL R_EDGE F_EDGE
  3515 	{$$ = NULL;
  3530 	{$$ = NULL;
  3516 	 yynerrs++;
  3531 	 yynerrs++;
  3517 	 print_err_msg(current_filename, locf(@4), locl(@4), "'R_EDGE' and 'F_EDGE' can't be present at the same time in edge declaration.");
  3532 	 print_err_msg(current_filename, locf(@5), locl(@5), "'R_EDGE' and 'F_EDGE' can't be present at the same time in edge declaration.");
  3518 	}
  3533 	}
  3519 | var1_list ':' R_EDGE
  3534 | var1_list ':' R_EDGE
  3520 	{$$ = NULL;
  3535 	{$$ = NULL;
  3521 	 yynerrs++;
  3536 	 yynerrs++;
  3522 	 print_err_msg(current_filename, locf(@2), locl(@2), "'BOOL' missing in edge declaration.");
  3537 	 print_err_msg(current_filename, locl(@2), locf(@3), "'BOOL' missing in edge declaration.");
  3523 	}
  3538 	}
  3524 | var1_list ':' F_EDGE
  3539 | var1_list ':' F_EDGE
  3525 	{$$ = NULL;
  3540 	{$$ = NULL;
  3526 	 yynerrs++;
  3541 	 yynerrs++;
  3527 	 print_err_msg(current_filename, locf(@2), locl(@2), "'BOOL' missing in edge declaration.");
  3542 	 print_err_msg(current_filename, locl(@2), locf(@3), "'BOOL' missing in edge declaration.");
  3528 	}
  3543 	}
  3529 /* ERROR_CHECK_END */
  3544 /* ERROR_CHECK_END */
  3530 ;
  3545 ;
  3531 
  3546 
  3532 
  3547 
  3550 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3565 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3551 /* ERROR_CHECK_BEGIN */
  3566 /* ERROR_CHECK_BEGIN */
  3552 | var1_list simple_spec_init
  3567 | var1_list simple_spec_init
  3553 	{$$ = NULL;
  3568 	{$$ = NULL;
  3554 	 yynerrs++;
  3569 	 yynerrs++;
  3555 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and simple specification.");
  3570 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and simple specification.");
  3556 	}
  3571 	}
  3557 | var1_list subrange_spec_init
  3572 | var1_list subrange_spec_init
  3558 	{$$ = NULL;
  3573 	{$$ = NULL;
  3559 	 yynerrs++;
  3574 	 yynerrs++;
  3560 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and subrange specification.");
  3575 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and subrange specification.");
  3561 	}
  3576 	}
  3562 | var1_list enumerated_spec_init
  3577 | var1_list enumerated_spec_init
  3563 	{$$ = NULL;
  3578 	{$$ = NULL;
  3564 	 yynerrs++;
  3579 	 yynerrs++;
  3565 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and enumerated specification.");
  3580 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and enumerated specification.");
  3566 	}
  3581 	}
  3567 | var1_list ':' identifier
  3582 | var1_list ':' identifier
  3568 	{$$ = NULL;
  3583 	{$$ = NULL;
  3569 	 yynerrs++;
  3584 	 yynerrs++;
  3570 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown variable type defined in variable declaration.");
  3585 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown variable type defined in variable declaration.");
  3571 	}
  3586 	}
  3572 | var1_list ':' error
  3587 | var1_list ':' error
  3573 	{$$ = NULL;
  3588 	{$$ = NULL;
  3574 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in variable declaration.");
  3589 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in variable declaration.");
  3575 	 yyerrok;
  3590 	 yyerrok;
  3576 	}
  3591 	}
  3577 /* ERROR_CHECK_END */
  3592 /* ERROR_CHECK_END */
  3578 ;
  3593 ;
  3579 
  3594 
  3587 	{$$ = $1; $$->add_element($3);
  3602 	{$$ = $1; $$->add_element($3);
  3588 	 variable_name_symtable.insert($3, prev_declared_variable_name_token);
  3603 	 variable_name_symtable.insert($3, prev_declared_variable_name_token);
  3589 	}
  3604 	}
  3590 /* ERROR_CHECK_BEGIN */
  3605 /* ERROR_CHECK_BEGIN */
  3591 | var1_list variable_name
  3606 | var1_list variable_name
  3592 	{$$ = NULL;
  3607 	{$$ = $1;
  3593 	 yynerrs++;
  3608 	 yynerrs++;
  3594 	 print_err_msg(current_filename, locf(@2), locl(@2), "',' missing in variable list.");
  3609 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in variable list.");
  3595 	}
  3610 	}
  3596 | var1_list ',' error
  3611 | var1_list ',' error
  3597 	{$$ = NULL;
  3612 	{$$ = $1;
  3598 	 yynerrs++;
       
  3599 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ',' in variable declaration.");
  3613 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ',' in variable declaration.");
       
  3614 	 yyerrok;
  3600 	}
  3615 	}
  3601 /* ERROR_CHECK_END */
  3616 /* ERROR_CHECK_END */
  3602 ;
  3617 ;
  3603 
  3618 
  3604 
  3619 
  3608 	{$$ = new array_var_init_decl_c($1, $3, locloc(@$));}
  3623 	{$$ = new array_var_init_decl_c($1, $3, locloc(@$));}
  3609 /* ERROR_CHECK_BEGIN */
  3624 /* ERROR_CHECK_BEGIN */
  3610 | var1_list array_spec_init
  3625 | var1_list array_spec_init
  3611 	{$$ = NULL;
  3626 	{$$ = NULL;
  3612 	 yynerrs++;
  3627 	 yynerrs++;
  3613 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and array specification.");
  3628 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and array specification.");
  3614 	}
  3629 	}
  3615 /* ERROR_CHECK_END */
  3630 /* ERROR_CHECK_END */
  3616 ;
  3631 ;
  3617 
  3632 
  3618 
  3633 
  3621 	{$$ = new structured_var_init_decl_c($1, $3, locloc(@$));}
  3636 	{$$ = new structured_var_init_decl_c($1, $3, locloc(@$));}
  3622 /* ERROR_CHECK_BEGIN */
  3637 /* ERROR_CHECK_BEGIN */
  3623 | var1_list initialized_structure
  3638 | var1_list initialized_structure
  3624 	{$$ = NULL;
  3639 	{$$ = NULL;
  3625 	 yynerrs++;
  3640 	 yynerrs++;
  3626 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and structured specification.");
  3641 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and structured specification.");
  3627 	}
  3642 	}
  3628 /* ERROR_CHECK_END */
  3643 /* ERROR_CHECK_END */
  3629 ;
  3644 ;
  3630 
  3645 
  3631 
  3646 
  3643 	{$$ = new fb_name_decl_c($1, $2, $4, locloc(@$));}
  3658 	{$$ = new fb_name_decl_c($1, $2, $4, locloc(@$));}
  3644 /* ERROR_CHECK_BEGIN */
  3659 /* ERROR_CHECK_BEGIN */
  3645 | fb_name_list_with_colon ASSIGN structure_initialization
  3660 | fb_name_list_with_colon ASSIGN structure_initialization
  3646 	{$$ = NULL;
  3661 	{$$ = NULL;
  3647 	 yynerrs++;
  3662 	 yynerrs++;
  3648 	 print_err_msg(current_filename, locf(@2), locl(@2), "no function block type name defined in function block declaration with initialization.");
  3663 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block type name defined in function block declaration with initialization.");
  3649 	}
  3664 	}
  3650 | fb_name_list_with_colon function_block_type_name structure_initialization
  3665 | fb_name_list_with_colon function_block_type_name structure_initialization
  3651 	{$$ = NULL;
  3666 	{$$ = NULL;
  3652 	 yynerrs++;
  3667 	 yynerrs++;
  3653 	 print_err_msg(current_filename, locf(@2), locl(@2), "':=' missing in function block declaration with initialization.");
  3668 	 print_err_msg(current_filename, locl(@2), locf(@3), "':=' missing in function block declaration with initialization.");
  3654 	}
  3669 	}
  3655 | fb_name_list_with_colon function_block_type_name ASSIGN error
  3670 | fb_name_list_with_colon function_block_type_name ASSIGN error
  3656 	{$$ = NULL;
  3671 	{$$ = NULL;
  3657 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid initialization in function block declaration.");
  3672 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid initialization in function block declaration.");
  3658 	 yyerrok;
  3673 	 yyerrok;
  3659 	}
  3674 	}
  3660 /* ERROR_CHECK_END */
  3675 /* ERROR_CHECK_END */
  3661 ;
  3676 ;
  3662 
  3677 
  3722 	{$$ = new output_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3737 	{$$ = new output_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3723 /* ERROR_CHECK_BEGIN */
  3738 /* ERROR_CHECK_BEGIN */
  3724 | VAR_OUTPUT END_VAR
  3739 | VAR_OUTPUT END_VAR
  3725 	{$$ = NULL;
  3740 	{$$ = NULL;
  3726 	 yynerrs++;
  3741 	 yynerrs++;
  3727 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in output variable(s) declaration.");
  3742 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in output variable(s) declaration.");
  3728 	}
  3743 	}
  3729 | VAR_OUTPUT RETAIN END_VAR
  3744 | VAR_OUTPUT RETAIN END_VAR
  3730 	{$$ = NULL;
  3745 	{$$ = NULL;
  3731 	 yynerrs++;
  3746 	 yynerrs++;
  3732 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in retentive output variable(s) declaration.");
  3747 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in retentive output variable(s) declaration.");
  3733 	}
  3748 	}
  3734 | VAR_OUTPUT NON_RETAIN END_VAR
  3749 | VAR_OUTPUT NON_RETAIN END_VAR
  3735 	{$$ = NULL;
  3750 	{$$ = NULL;
  3736 	 yynerrs++;
  3751 	 yynerrs++;
  3737 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in non-retentive output variable(s) declaration.");
  3752 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in non-retentive output variable(s) declaration.");
  3738 	}
  3753 	}
  3739 | VAR_OUTPUT error var_init_decl_list END_VAR
  3754 | VAR_OUTPUT error var_init_decl_list END_VAR
  3740 	{$$ = NULL;
  3755 	{$$ = NULL;
  3741 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_OUPUT' in output variable(s) declaration.");
  3756 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_OUPUT' in output variable(s) declaration.");
  3742 	 yyerrok;
  3757 	 yyerrok;
  3743 	}
  3758 	}
  3744 | VAR_OUTPUT RETAIN error var_init_decl_list END_VAR
  3759 | VAR_OUTPUT RETAIN error var_init_decl_list END_VAR
  3745 	{$$ = NULL;
  3760 	{$$ = NULL;
  3746 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive output variable(s) declaration.");
  3761 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive output variable(s) declaration.");
  3747 	 yyerrok;
  3762 	 yyerrok;
  3748 	}
  3763 	}
  3749 | VAR_OUTPUT NON_RETAIN error var_init_decl_list END_VAR
  3764 | VAR_OUTPUT NON_RETAIN error var_init_decl_list END_VAR
  3750 	{$$ = NULL;
  3765 	{$$ = NULL;
  3751 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive output variable(s) declaration.");
  3766 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive output variable(s) declaration.");
  3752 	 yyerrok;
  3767 	 yyerrok;
  3753 	}
  3768 	}
  3754 | VAR_OUTPUT error END_VAR
  3769 | VAR_OUTPUT error END_VAR
  3755 	{$$ = NULL;
  3770 	{$$ = NULL;
  3756 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in output variable(s) declaration.");
  3771 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in output variable(s) declaration.");
  3757 	 yyerrok;
  3772 	 yyerrok;
  3758 	}
  3773 	}
  3759 | VAR_OUTPUT RETAIN error END_VAR
  3774 | VAR_OUTPUT RETAIN error END_VAR
  3760 	{$$ = NULL;
  3775 	{$$ = NULL;
  3761 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in retentive output variable(s) declaration.");
  3776 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in retentive output variable(s) declaration.");
  3762 	 yyerrok;
  3777 	 yyerrok;
  3763 	}
  3778 	}
  3764 | VAR_OUTPUT NON_RETAIN error END_VAR
  3779 | VAR_OUTPUT NON_RETAIN error END_VAR
  3765 	{$$ = NULL;
  3780 	{$$ = NULL;
  3766 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in non-retentive output variable(s) declaration.");
  3781 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in non-retentive output variable(s) declaration.");
  3767 	 yyerrok;
  3782 	 yyerrok;
  3768 	}
  3783 	}
  3769 /* ERROR_CHECK_END */
  3784 /* ERROR_CHECK_END */
  3770 ;
  3785 ;
  3771 
  3786 
  3776 	{$$ = new input_output_declarations_c($2, locloc(@$));}
  3791 	{$$ = new input_output_declarations_c($2, locloc(@$));}
  3777 /* ERROR_CHECK_BEGIN */
  3792 /* ERROR_CHECK_BEGIN */
  3778 | VAR_IN_OUT END_VAR
  3793 | VAR_IN_OUT END_VAR
  3779 	{$$ = NULL;
  3794 	{$$ = NULL;
  3780 	 yynerrs++;
  3795 	 yynerrs++;
  3781 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in in_out variable(s) declaration.");
  3796 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in in_out variable(s) declaration.");
  3782 	}
  3797 	}
  3783 | VAR_IN_OUT error END_VAR
  3798 | VAR_IN_OUT error END_VAR
  3784 	{$$ = NULL;
  3799 	{$$ = NULL;
  3785 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in in_out variable(s) declaration.");
  3800 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in in_out variable(s) declaration.");
  3786 	 yyerrok;
  3801 	 yyerrok;
  3787 	}
  3802 	}
  3788 /* ERROR_CHECK_END */
  3803 /* ERROR_CHECK_END */
  3789 ;
  3804 ;
  3790 
  3805 
  3795   var_declaration ';'
  3810   var_declaration ';'
  3796 	{$$ = new var_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3811 	{$$ = new var_declaration_list_c(locloc(@$)); $$->add_element($1);}
  3797 | var_declaration_list var_declaration ';'
  3812 | var_declaration_list var_declaration ';'
  3798 	{$$ = $1; $$->add_element($2);}
  3813 	{$$ = $1; $$->add_element($2);}
  3799 /* ERROR_CHECK_BEGIN */
  3814 /* ERROR_CHECK_BEGIN */
       
  3815 | error ';'
       
  3816 	{$$ = new var_declaration_list_c(locloc(@$));
       
  3817 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid variable(s) declaration.");
       
  3818 	 yyerrok;
       
  3819 	}
  3800 | var_declaration error
  3820 | var_declaration error
  3801 	{$$ = NULL;
  3821 	{$$ = new var_declaration_list_c(locloc(@$));
  3802 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of variable(s) declaration.");
  3822 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of variable(s) declaration.");
  3803 	 yyerrok;
  3823 	 yyerrok;
  3804 	}
  3824 	}
  3805 | var_declaration_list var_declaration error
  3825 | var_declaration_list var_declaration error
  3806 	{$$ = NULL;
  3826 	{$$ = $1;
  3807 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of variable(s) declaration.");
  3827 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of variable(s) declaration.");
  3808 	 yyerrok;
  3828 	 yyerrok;
  3809 	}
  3829 	}
  3810 | var_declaration_list error ';'
  3830 | var_declaration_list error ';'
  3811 	{$$ = NULL;
  3831 	{$$ = $1;
  3812 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid variable(s) declaration.");
  3832 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid variable(s) declaration.");
  3813 	 yyerrok;
  3833 	 yyerrok;
  3814 	}
  3834 	}
  3815 | var_declaration_list ';'
  3835 | var_declaration_list ';'
  3816 	{$$ = NULL;
  3836 	{$$ = $1;
  3817 	 yynerrs++;
  3837 	 yynerrs++;
  3818 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after variable(s) declaration.");
  3838 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after variable(s) declaration.");
  3819 	}
  3839 	}
  3820 /* ERROR_CHECK_END */
  3840 /* ERROR_CHECK_END */
  3821 ;
  3841 ;
  3833 | structured_var_declaration
  3853 | structured_var_declaration
  3834 | string_var_declaration
  3854 | string_var_declaration
  3835 ;
  3855 ;
  3836 
  3856 
  3837 var1_declaration:
  3857 var1_declaration:
  3838   var1_list  ':' simple_specification
  3858   var1_list ':' simple_specification
  3839 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3859 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3840 | var1_list  ':' subrange_specification
  3860 | var1_list ':' subrange_specification
  3841 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3861 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3842 | var1_list  ':' enumerated_specification
  3862 | var1_list ':' enumerated_specification
  3843 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3863 	{$$ = new var1_init_decl_c($1, $3, locloc(@$));}
  3844 /* ERROR_CHECK_BEGIN */
  3864 /* ERROR_CHECK_BEGIN */
  3845 | var1_list simple_specification
  3865 | var1_list simple_specification
  3846 	{$$ = NULL;
  3866 	{$$ = NULL;
  3847 	 yynerrs++;
  3867 	 yynerrs++;
  3848 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and simple specification.");
  3868 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and simple specification.");
  3849 	}
  3869 	}
  3850 | var1_list subrange_specification
  3870 | var1_list subrange_specification
  3851 	{$$ = NULL;
  3871 	{$$ = NULL;
  3852 	 yynerrs++;
  3872 	 yynerrs++;
  3853 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and subrange specification.");
  3873 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and subrange specification.");
  3854 	}
  3874 	}
  3855 | var1_list enumerated_specification
  3875 | var1_list enumerated_specification
  3856 	{$$ = NULL;
  3876 	{$$ = NULL;
  3857 	 yynerrs++;
  3877 	 yynerrs++;
  3858 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and enumerated specification.");
  3878 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and enumerated specification.");
  3859 	}
  3879 	}
  3860 /* ERROR_CHECK_END */
  3880 /* ERROR_CHECK_END */
  3861 ;
  3881 ;
  3862 
  3882 
  3863 
  3883 
  3867 	{$$ = new array_var_declaration_c($1, $3, locloc(@$));}
  3887 	{$$ = new array_var_declaration_c($1, $3, locloc(@$));}
  3868 /* ERROR_CHECK_BEGIN */
  3888 /* ERROR_CHECK_BEGIN */
  3869 | var1_list array_specification
  3889 | var1_list array_specification
  3870 	{$$ = NULL;
  3890 	{$$ = NULL;
  3871 	 yynerrs++;
  3891 	 yynerrs++;
  3872 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and array specification.");
  3892 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and array specification.");
  3873 	}
  3893 	}
  3874 /* ERROR_CHECK_END */
  3894 /* ERROR_CHECK_END */
  3875 ;
  3895 ;
  3876 
  3896 
  3877 structured_var_declaration:
  3897 structured_var_declaration:
  3879 	{$$ = new structured_var_declaration_c($1, $3, locloc(@$));}
  3899 	{$$ = new structured_var_declaration_c($1, $3, locloc(@$));}
  3880 /* ERROR_CHECK_BEGIN */
  3900 /* ERROR_CHECK_BEGIN */
  3881 | var1_list prev_declared_structure_type_name
  3901 | var1_list prev_declared_structure_type_name
  3882 	{$$ = NULL;
  3902 	{$$ = NULL;
  3883 	 yynerrs++;
  3903 	 yynerrs++;
  3884 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and structured specification.");
  3904 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and structured specification.");
  3885 	}
  3905 	}
  3886 | var1_list ':' identifier
  3906 | var1_list ':' identifier
  3887 	{$$ = NULL;
  3907 	{$$ = NULL;
  3888 	 yynerrs++;
  3908 	 yynerrs++;
  3889 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown type name in structured variable declaration.");
  3909 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown type name in structured variable declaration.");
  3890 	}
  3910 	}
  3891 /* ERROR_CHECK_END */
  3911 /* ERROR_CHECK_END */
  3892 ;
  3912 ;
  3893 
  3913 
  3894 
  3914 
  3899 	{$$ = new var_declarations_c(new constant_option_c(locloc(@2)), $3, locloc(@$));}
  3919 	{$$ = new var_declarations_c(new constant_option_c(locloc(@2)), $3, locloc(@$));}
  3900 /* ERROR_CHECK_BEGIN */
  3920 /* ERROR_CHECK_BEGIN */
  3901 | VAR END_VAR
  3921 | VAR END_VAR
  3902 	{$$ = NULL;
  3922 	{$$ = NULL;
  3903 	 yynerrs++;
  3923 	 yynerrs++;
  3904 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in variable(s) declaration.");
  3924 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in variable(s) declaration.");
  3905 	}
  3925 	}
  3906 | VAR CONSTANT END_VAR
  3926 | VAR CONSTANT END_VAR
  3907 	{$$ = NULL;
  3927 	{$$ = NULL;
  3908 	 yynerrs++;
  3928 	 yynerrs++;
  3909 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in constant variable(s) declaration.");
  3929 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in constant variable(s) declaration.");
  3910 	}
  3930 	}
  3911 | VAR error var_init_decl_list END_VAR
  3931 | VAR error var_init_decl_list END_VAR
  3912 	{$$ = NULL;
  3932 	{$$ = NULL;
  3913 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR' in variable(s) declaration.");
  3933 	 print_err_msg(current_filename, locl(@1), locf(@3), "unexpected token after 'VAR' in variable(s) declaration.");
  3914 	 yyerrok;
  3934 	 yyerrok;
  3915 	}
  3935 	}
  3916 | VAR CONSTANT error var_init_decl_list END_VAR
  3936 | VAR CONSTANT error var_init_decl_list END_VAR
  3917 	{$$ = NULL;
  3937 	{$$ = NULL;
  3918 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'CONSTANT' in constant variable(s) declaration.");
  3938 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'CONSTANT' in constant variable(s) declaration.");
  3919 	 yyerrok;
  3939 	 yyerrok;
  3920 	}
  3940 	}
  3921 | VAR error END_VAR
  3941 | VAR error END_VAR
  3922 	{$$ = NULL;
  3942 	{$$ = NULL;
  3923 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in variable(s) declaration.");
  3943 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in variable(s) declaration.");
  3924 	 yyerrok;
  3944 	 yyerrok;
  3925 	}
  3945 	}
  3926 | VAR CONSTANT error END_VAR
  3946 | VAR CONSTANT error END_VAR
  3927 	{$$ = NULL;
  3947 	{$$ = NULL;
  3928 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in constant variable(s) declaration.");
  3948 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in constant variable(s) declaration.");
  3929 	 yyerrok;
  3949 	 yyerrok;
  3930 	}
  3950 	}
  3931 /* ERROR_CHECK_END */
  3951 /* ERROR_CHECK_END */
  3932 ;
  3952 ;
  3933 
  3953 
  3937 	{$$ = new retentive_var_declarations_c($3, locloc(@$));}
  3957 	{$$ = new retentive_var_declarations_c($3, locloc(@$));}
  3938 /* ERROR_CHECK_BEGIN */
  3958 /* ERROR_CHECK_BEGIN */
  3939 | VAR RETAIN END_VAR
  3959 | VAR RETAIN END_VAR
  3940 	{$$ = NULL;
  3960 	{$$ = NULL;
  3941 	 yynerrs++;
  3961 	 yynerrs++;
  3942 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in retentive variable(s) declaration.");
  3962 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in retentive variable(s) declaration.");
  3943 	}
  3963 	}
  3944 | VAR RETAIN error var_init_decl_list END_VAR
  3964 | VAR RETAIN error var_init_decl_list END_VAR
  3945 	{$$ = NULL;
  3965 	{$$ = NULL;
  3946 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive variable(s) declaration.");
  3966 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive variable(s) declaration.");
  3947 	 yyerrok;
  3967 	 yyerrok;
  3948 	}
  3968 	}
  3949 | VAR RETAIN error END_VAR
  3969 | VAR RETAIN error END_VAR
  3950 	{$$ = NULL;
  3970 	{$$ = NULL;
  3951 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in retentive variable(s) declaration.");
  3971 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in retentive variable(s) declaration.");
  3952 	 yyerrok;
  3972 	 yyerrok;
  3953 	}
  3973 	}
  3954 /* ERROR_CHECK_END */
  3974 /* ERROR_CHECK_END */
  3955 ;
  3975 ;
  3956 
  3976 
  3966 	{$$ = new located_var_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3986 	{$$ = new located_var_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  3967 /* ERROR_CHECK_BEGIN */
  3987 /* ERROR_CHECK_BEGIN */
  3968 | VAR NON_RETAIN END_VAR
  3988 | VAR NON_RETAIN END_VAR
  3969 	{$$ = NULL;
  3989 	{$$ = NULL;
  3970 	 yynerrs++;
  3990 	 yynerrs++;
  3971 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in non-retentive located variable(s) declaration.");
  3991 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in non-retentive located variable(s) declaration.");
  3972 	}
  3992 	}
  3973 | VAR error located_var_decl_list END_VAR
  3993 | VAR error located_var_decl_list END_VAR
  3974 	{$$ = NULL;
  3994 	{$$ = NULL;
  3975 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR' in located variable(s) declaration.");
  3995 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR' in located variable(s) declaration.");
  3976 	 yyerrok;
  3996 	 yyerrok;
  3977 	}
  3997 	}
  3978 | VAR CONSTANT error located_var_decl_list END_VAR
  3998 | VAR CONSTANT error located_var_decl_list END_VAR
  3979 	{$$ = NULL;
  3999 	{$$ = NULL;
  3980 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'CONSTANT' in constant located variable(s) declaration.");
  4000 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'CONSTANT' in constant located variable(s) declaration.");
  3981 	 yyerrok;
  4001 	 yyerrok;
  3982 	}
  4002 	}
  3983 | VAR RETAIN error located_var_decl_list END_VAR
  4003 | VAR RETAIN error located_var_decl_list END_VAR
  3984 	{$$ = NULL;
  4004 	{$$ = NULL;
  3985 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive located variable(s) declaration.");
  4005 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive located variable(s) declaration.");
  3986 	 yyerrok;
  4006 	 yyerrok;
  3987 	}
  4007 	}
  3988 | VAR NON_RETAIN error located_var_decl_list END_VAR
  4008 | VAR NON_RETAIN error located_var_decl_list END_VAR
  3989 	{$$ = NULL;
  4009 	{$$ = NULL;
  3990 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive located variable(s) declaration.");
  4010 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive located variable(s) declaration.");
  3991 	 yyerrok;
  4011 	 yyerrok;
  3992 	}
  4012 	}
  3993 | VAR NON_RETAIN error END_VAR
  4013 | VAR NON_RETAIN error END_VAR
  3994 	{$$ = NULL;
  4014 	{$$ = NULL;
  3995 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in non retentive variable(s) declaration.");
  4015 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in non retentive variable(s) declaration.");
  3996 	 yyerrok;
  4016 	 yyerrok;
  3997 	}
  4017 	}
  3998 /* ERROR_CHECK_END */
  4018 /* ERROR_CHECK_END */
  3999 ;
  4019 ;
  4000 
  4020 
  4004   located_var_decl ';'
  4024   located_var_decl ';'
  4005 	{$$ = new located_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4025 	{$$ = new located_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4006 | located_var_decl_list located_var_decl ';'
  4026 | located_var_decl_list located_var_decl ';'
  4007 	{$$ = $1; $$->add_element($2);}
  4027 	{$$ = $1; $$->add_element($2);}
  4008 /* ERROR_CHECK_BEGIN */
  4028 /* ERROR_CHECK_BEGIN */
       
  4029 | error ';'
       
  4030 	{$$ = new located_var_decl_list_c(locloc(@$));
       
  4031 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid located variable declaration.");
       
  4032 	 yyerrok;
       
  4033 	}
  4009 | located_var_decl error
  4034 | located_var_decl error
  4010 	{$$ = NULL;
  4035 	{$$ = new located_var_decl_list_c(locloc(@$));
  4011 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of located variable declaration.");
  4036 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of located variable declaration.");
  4012 	 yyerrok;
  4037 	 yyerrok;
  4013 	}
  4038 	}
  4014 | located_var_decl_list located_var_decl error
  4039 | located_var_decl_list located_var_decl error
  4015 	{$$ = NULL;
  4040 	{$$ = $1;
  4016 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of located variable declaration.");
  4041 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of located variable declaration.");
  4017 	 yyerrok;
  4042 	 yyerrok;
  4018 	}
  4043 	}
  4019 | located_var_decl_list error ';'
  4044 | located_var_decl_list error ';'
  4020 	{$$ = NULL;
  4045 	{$$ = $1;
  4021 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid located variable declaration.");
  4046 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid located variable declaration.");
  4022 	 yyerrok;
  4047 	 yyerrok;
  4023 	}
  4048 	}
  4024 | located_var_decl_list ';'
  4049 | located_var_decl_list ';'
  4025 	{$$ = NULL;
  4050 	{$$ = $1;
  4026 	 yynerrs++;
  4051 	 yynerrs++;
  4027 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after located variable declaration.");
  4052 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after located variable declaration.");
  4028 	}
  4053 	}
  4029 /* ERROR_CHECK_END */
  4054 /* ERROR_CHECK_END */
  4030 ;
  4055 ;
  4039 	{$$ = new located_var_decl_c(NULL, $1, $3, locloc(@$));}
  4064 	{$$ = new located_var_decl_c(NULL, $1, $3, locloc(@$));}
  4040 /* ERROR_CHECK_BEGIN */
  4065 /* ERROR_CHECK_BEGIN */
  4041 | variable_name location located_var_spec_init
  4066 | variable_name location located_var_spec_init
  4042 	{$$ = NULL;
  4067 	{$$ = NULL;
  4043 	 yynerrs++;
  4068 	 yynerrs++;
  4044 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between located variable location and specification.");
  4069 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between located variable location and specification.");
  4045 	}
  4070 	}
  4046 | location located_var_spec_init
  4071 | location located_var_spec_init
  4047 	{$$ = NULL;
  4072 	{$$ = NULL;
  4048 	 yynerrs++;
  4073 	 yynerrs++;
  4049 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between located variable location and specification.");
  4074 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between located variable location and specification.");
  4050 	}
  4075 	}
  4051 | variable_name location ':' error
  4076 | variable_name location ':' error
  4052 	{$$ = NULL;
  4077 	{$$ = NULL;
  4053 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in located variable declaration.");
  4078 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in located variable declaration.");
  4054 	 yyerrok;
  4079 	 yyerrok;
  4055 	}
  4080 	}
  4056 | location ':' error
  4081 | location ':' error
  4057 	{$$ = NULL;
  4082 	{$$ = NULL;
  4058 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in located variable declaration.");
  4083 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in located variable declaration.");
  4059 	 yyerrok;
  4084 	 yyerrok;
  4060 	}
  4085 	}
  4061 /* ERROR_CHECK_END */
  4086 /* ERROR_CHECK_END */
  4062 ;
  4087 ;
  4063 
  4088 
  4071 	{$$ = new external_var_declarations_c(new constant_option_c(locloc(@2)), $3, locloc(@$));}
  4096 	{$$ = new external_var_declarations_c(new constant_option_c(locloc(@2)), $3, locloc(@$));}
  4072 /* ERROR_CHECK_BEGIN */
  4097 /* ERROR_CHECK_BEGIN */
  4073 | VAR_EXTERNAL END_VAR
  4098 | VAR_EXTERNAL END_VAR
  4074 	{$$ = NULL;
  4099 	{$$ = NULL;
  4075 	 yynerrs++;
  4100 	 yynerrs++;
  4076 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in external variable(s) declaration.");
  4101 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in external variable(s) declaration.");
  4077 	}
  4102 	}
  4078 | VAR_EXTERNAL CONSTANT END_VAR
  4103 | VAR_EXTERNAL CONSTANT END_VAR
  4079 	{$$ = NULL;
  4104 	{$$ = NULL;
  4080 	 yynerrs++;
  4105 	 yynerrs++;
  4081 	 print_err_msg(current_filename, locf(@1), locl(@3), "no variable declared in constant external variable(s) declaration.");
  4106 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in constant external variable(s) declaration.");
  4082 	}
  4107 	}
  4083 | VAR_EXTERNAL error external_declaration_list END_VAR
  4108 | VAR_EXTERNAL error external_declaration_list END_VAR
  4084 	{$$ = NULL;
  4109 	{$$ = NULL;
  4085 	 print_err_msg(current_filename, locf(@1), locl(@4), "unexpected token after 'VAR_EXTERNAL' in external variable(s) declaration.");
  4110 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_EXTERNAL' in external variable(s) declaration.");
  4086 	 yyerrok;
  4111 	 yyerrok;
  4087 	}
  4112 	}
  4088 | VAR_EXTERNAL CONSTANT error external_declaration_list END_VAR
  4113 | VAR_EXTERNAL CONSTANT error external_declaration_list END_VAR
  4089 	{$$ = NULL;
  4114 	{$$ = NULL;
  4090 	 print_err_msg(current_filename, locf(@2), locl(@5), "unexpected token after 'CONSTANT' in constant external variable(s) declaration.");
  4115 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'CONSTANT' in constant external variable(s) declaration.");
  4091 	 yyerrok;
  4116 	 yyerrok;
  4092 	}
  4117 	}
  4093 | VAR_EXTERNAL error END_VAR
  4118 | VAR_EXTERNAL error END_VAR
  4094 	{$$ = NULL;
  4119 	{$$ = NULL;
  4095 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in external variable(s) declaration.");
  4120 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in external variable(s) declaration.");
  4096 	 yyerrok;
  4121 	 yyerrok;
  4097 	}
  4122 	}
  4098 | VAR_EXTERNAL CONSTANT error END_VAR
  4123 | VAR_EXTERNAL CONSTANT error END_VAR
  4099 	{$$ = NULL;
  4124 	{$$ = NULL;
  4100 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in constant external variable(s) declaration.");
  4125 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in constant external variable(s) declaration.");
  4101 	 yyerrok;
  4126 	 yyerrok;
  4102 	}
  4127 	}
  4103 /* ERROR_CHECK_END */
  4128 /* ERROR_CHECK_END */
  4104 ;
  4129 ;
  4105 
  4130 
  4108   external_declaration ';'
  4133   external_declaration ';'
  4109 	{$$ = new external_declaration_list_c(locloc(@$)); $$->add_element($1);}
  4134 	{$$ = new external_declaration_list_c(locloc(@$)); $$->add_element($1);}
  4110 | external_declaration_list external_declaration ';'
  4135 | external_declaration_list external_declaration ';'
  4111 	{$$ = $1; $$->add_element($2);}
  4136 	{$$ = $1; $$->add_element($2);}
  4112 /* ERROR_CHECK_BEGIN */
  4137 /* ERROR_CHECK_BEGIN */
       
  4138 | error ';'
       
  4139 	{$$ = new external_declaration_list_c(locloc(@$));
       
  4140 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid external variable declaration.");
       
  4141 	 yyerrok;
       
  4142 	}
  4113 | external_declaration error
  4143 | external_declaration error
  4114 	{$$ = NULL;
  4144 	{$$ = new external_declaration_list_c(locloc(@$));
  4115 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of external variable declaration.");
  4145 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of external variable declaration.");
  4116 	 yyerrok;
  4146 	 yyerrok;
  4117 	}
  4147 	}
  4118 | external_declaration_list external_declaration error
  4148 | external_declaration_list external_declaration error
  4119 	{$$ = NULL;
  4149 	{$$ = $1;
  4120 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of external variable declaration.");
  4150 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of external variable declaration.");
  4121 	 yyerrok;
  4151 	 yyerrok;
  4122 	}
  4152 	}
  4123 | external_declaration_list error ';'
  4153 | external_declaration_list error ';'
  4124 	{$$ = NULL;
  4154 	{$$ = $1;
  4125 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid external variable declaration.");
  4155 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid external variable declaration.");
  4126 	 yyerrok;
  4156 	 yyerrok;
  4127 	}
  4157 	}
  4128 | external_declaration_list ';'
  4158 | external_declaration_list ';'
  4129 	{$$ = NULL;
  4159 	{$$ = $1;
  4130 	 yynerrs++;
  4160 	 yynerrs++;
  4131 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after external variable declaration.");
  4161 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after external variable declaration.");
  4132 	}
  4162 	}
  4133 /* ERROR_CHECK_END */
  4163 /* ERROR_CHECK_END */
  4134 ;
  4164 ;
  4161 	}
  4191 	}
  4162 /* ERROR_CHECK_BEGIN */
  4192 /* ERROR_CHECK_BEGIN */
  4163 | global_var_name simple_specification
  4193 | global_var_name simple_specification
  4164 	{$$ = NULL;
  4194 	{$$ = NULL;
  4165 	 yynerrs++;
  4195 	 yynerrs++;
  4166 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and simple specification.");
  4196 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and simple specification.");
  4167 	}
  4197 	}
  4168 | global_var_name subrange_specification
  4198 | global_var_name subrange_specification
  4169 	{$$ = NULL;
  4199 	{$$ = NULL;
  4170 	 yynerrs++;
  4200 	 yynerrs++;
  4171 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and subrange specification.");
  4201 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and subrange specification.");
  4172 	}
  4202 	}
  4173 | global_var_name enumerated_specification
  4203 | global_var_name enumerated_specification
  4174 	{$$ = NULL;
  4204 	{$$ = NULL;
  4175 	 yynerrs++;
  4205 	 yynerrs++;
  4176 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and enumerated specification.");
  4206 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and enumerated specification.");
  4177 	}
  4207 	}
  4178 | global_var_name array_specification
  4208 | global_var_name array_specification
  4179 	{$$ = NULL;
  4209 	{$$ = NULL;
  4180 	 yynerrs++;
  4210 	 yynerrs++;
  4181 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and array specification.");
  4211 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and array specification.");
  4182 	}
  4212 	}
  4183 | global_var_name prev_declared_structure_type_name
  4213 | global_var_name prev_declared_structure_type_name
  4184 	{$$ = NULL;
  4214 	{$$ = NULL;
  4185 	 yynerrs++;
  4215 	 yynerrs++;
  4186 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and structured specification.");
  4216 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and structured specification.");
  4187 	}
  4217 	}
  4188 | global_var_name function_block_type_name
  4218 | global_var_name function_block_type_name
  4189 	{$$ = NULL;
  4219 	{$$ = NULL;
  4190 	 yynerrs++;
  4220 	 yynerrs++;
  4191 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between external variable name and function block type specification.");
  4221 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between external variable name and function block type specification.");
  4192 	}
  4222 	}
  4193 | global_var_name ':' identifier
  4223 | global_var_name ':' identifier
  4194 	{$$ = NULL;
  4224 	{$$ = NULL;
  4195 	 yynerrs++;
  4225 	 yynerrs++;
  4196 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown type name in external variable declaration.");
  4226 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown type name in external variable declaration.");
  4197 	}
  4227 	}
  4198 | global_var_name ':' error
  4228 | global_var_name ':' error
  4199 	{$$ = NULL;
  4229 	{$$ = NULL;
  4200 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in external variable declaration.");
  4230 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in external variable declaration.");
  4201 	 yyerrok;
  4231 	 yyerrok;
  4202 	}
  4232 	}
  4203 /* ERROR_CHECK_END */
  4233 /* ERROR_CHECK_END */
  4204 ;
  4234 ;
  4205 
  4235 
  4216 	{$$ = new global_var_declarations_c(new retain_option_c(locloc(@2)), $3, locloc(@$));}
  4246 	{$$ = new global_var_declarations_c(new retain_option_c(locloc(@2)), $3, locloc(@$));}
  4217 /* ERROR_CHECK_BEGIN */
  4247 /* ERROR_CHECK_BEGIN */
  4218 | VAR_GLOBAL END_VAR
  4248 | VAR_GLOBAL END_VAR
  4219 	{$$ = NULL;
  4249 	{$$ = NULL;
  4220 	 yynerrs++;
  4250 	 yynerrs++;
  4221 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in global variable(s) declaration.");
  4251 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in global variable(s) declaration.");
  4222 	}
  4252 	}
  4223 | VAR_GLOBAL CONSTANT END_VAR
  4253 | VAR_GLOBAL CONSTANT END_VAR
  4224 	{$$ = NULL;
  4254 	{$$ = NULL;
  4225 	 yynerrs++;
  4255 	 yynerrs++;
  4226 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in constant global variable(s) declaration.");
  4256 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in constant global variable(s) declaration.");
  4227 	}
  4257 	}
  4228 | VAR_GLOBAL RETAIN END_VAR
  4258 | VAR_GLOBAL RETAIN END_VAR
  4229 	{$$ = NULL;
  4259 	{$$ = NULL;
  4230 	 yynerrs++;
  4260 	 yynerrs++;
  4231 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable declared in retentive global variable(s) declaration.");
  4261 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable declared in retentive global variable(s) declaration.");
  4232 	}
  4262 	}
  4233 | VAR_GLOBAL error global_var_decl_list END_VAR
  4263 | VAR_GLOBAL error global_var_decl_list END_VAR
  4234 	{$$ = NULL;
  4264 	{$$ = NULL;
  4235 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_GLOBAL' in global variable(s) declaration.");
  4265 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_GLOBAL' in global variable(s) declaration.");
  4236 	 yyerrok;
  4266 	 yyerrok;
  4237 	}
  4267 	}
  4238 | VAR_GLOBAL CONSTANT error global_var_decl_list END_VAR
  4268 | VAR_GLOBAL CONSTANT error global_var_decl_list END_VAR
  4239 	{$$ = NULL;
  4269 	{$$ = NULL;
  4240 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'CONSTANT' in constant global variable(s) declaration.");
  4270 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'CONSTANT' in constant global variable(s) declaration.");
  4241 	 yyerrok;
  4271 	 yyerrok;
  4242 	}
  4272 	}
  4243 | VAR_GLOBAL RETAIN error global_var_decl_list END_VAR
  4273 | VAR_GLOBAL RETAIN error global_var_decl_list END_VAR
  4244 	{$$ = NULL;
  4274 	{$$ = NULL;
  4245 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive global variable(s) declaration.");
  4275 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive global variable(s) declaration.");
  4246 	 yyerrok;
  4276 	 yyerrok;
  4247 	}
  4277 	}
  4248 | VAR_GLOBAL error END_VAR
  4278 | VAR_GLOBAL error END_VAR
  4249 	{$$ = NULL;
  4279 	{$$ = NULL;
  4250 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in global variable(s) declaration.");
  4280 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in global variable(s) declaration.");
  4251 	 yyerrok;
  4281 	 yyerrok;
  4252 	}
  4282 	}
  4253 | VAR_GLOBAL CONSTANT error END_VAR
  4283 | VAR_GLOBAL CONSTANT error END_VAR
  4254 	{$$ = NULL;
  4284 	{$$ = NULL;
  4255 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in constant global variable(s) declaration.");
  4285 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in constant global variable(s) declaration.");
  4256 	 yyerrok;
  4286 	 yyerrok;
  4257 	}
  4287 	}
  4258 | VAR_GLOBAL RETAIN error END_VAR
  4288 | VAR_GLOBAL RETAIN error END_VAR
  4259 	{$$ = NULL;
  4289 	{$$ = NULL;
  4260 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown error in constant global variable(s) declaration.");
  4290 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown error in constant global variable(s) declaration.");
  4261 	 yyerrok;
  4291 	 yyerrok;
  4262 	}
  4292 	}
  4263 /* ERROR_CHECK_END */
  4293 /* ERROR_CHECK_END */
  4264 ;
  4294 ;
  4265 
  4295 
  4269   global_var_decl ';'
  4299   global_var_decl ';'
  4270 	{$$ = new global_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4300 	{$$ = new global_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4271 | global_var_decl_list global_var_decl ';'
  4301 | global_var_decl_list global_var_decl ';'
  4272 	{$$ = $1; $$->add_element($2);}
  4302 	{$$ = $1; $$->add_element($2);}
  4273 /* ERROR_CHECK_BEGIN */
  4303 /* ERROR_CHECK_BEGIN */
       
  4304 | error ';'
       
  4305 	{$$ = new global_var_decl_list_c(locloc(@$));
       
  4306 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid global variable(s) declaration.");
       
  4307 	 yyerrok;
       
  4308 	}
  4274 | global_var_decl error
  4309 | global_var_decl error
  4275 	{$$ = NULL;
  4310 	{$$ = new global_var_decl_list_c(locloc(@$));
  4276 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of global variable(s) declaration.");
  4311 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of global variable(s) declaration.");
  4277 	 yyerrok;
  4312 	 yyerrok;
  4278 	}
  4313 	}
  4279 | global_var_decl_list global_var_decl error
  4314 | global_var_decl_list global_var_decl error
  4280 	{$$ = NULL;
  4315 	{$$ = $1;
  4281 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of global variable(s) declaration.");
  4316 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of global variable(s) declaration.");
  4282 	 yyerrok;
  4317 	 yyerrok;
  4283 	}
  4318 	}
  4284 | global_var_decl_list error ';'
  4319 | global_var_decl_list error ';'
  4285 	{$$ = NULL;
  4320 	{$$ = $1;
  4286 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid global variable(s) declaration.");
  4321 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid global variable(s) declaration.");
  4287 	 yyerrok;
  4322 	 yyerrok;
  4288 	}
  4323 	}
  4289 | global_var_decl_list ';'
  4324 | global_var_decl_list ';'
  4290 	{$$ = NULL;
  4325 	{$$ = $1;
  4291 	 yynerrs++;
  4326 	 yynerrs++;
  4292 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after global variable(s) declaration.");
  4327 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after global variable(s) declaration.");
  4293 	}
  4328 	}
  4294 /* ERROR_CHECK_END */
  4329 /* ERROR_CHECK_END */
  4295 ;
  4330 ;
  4306 	{$$ = new global_var_decl_c($1, $3, locloc(@$));}
  4341 	{$$ = new global_var_decl_c($1, $3, locloc(@$));}
  4307 /* ERROR_CHECK_BEGIN */
  4342 /* ERROR_CHECK_BEGIN */
  4308 | global_var_list located_var_spec_init
  4343 | global_var_list located_var_spec_init
  4309 	{$$ = NULL;
  4344 	{$$ = NULL;
  4310 	 yynerrs++;
  4345 	 yynerrs++;
  4311 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between global variable list and type specification.");
  4346 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between global variable list and type specification.");
  4312 	}
  4347 	}
  4313 | global_var_name location located_var_spec_init
  4348 | global_var_name location located_var_spec_init
  4314 	{$$ = NULL;
  4349 	{$$ = NULL;
  4315 	 yynerrs++;
  4350 	 yynerrs++;
  4316 	 print_err_msg(current_filename, locf(@3), locl(@3), "':' missing between global variable specification and type specification.");
  4351 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between global variable specification and type specification.");
  4317 	}
  4352 	}
  4318 | global_var_spec function_block_type_name
  4353 | global_var_spec function_block_type_name
  4319 	{$$ = NULL;
  4354 	{$$ = NULL;
  4320 	 yynerrs++;
  4355 	 yynerrs++;
  4321 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between global variable specification and function block type specification.");
  4356 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between global variable specification and function block type specification.");
  4322 	}
  4357 	}
  4323 | global_var_spec ':' identifier
  4358 | global_var_spec ':' identifier
  4324 	{$$ = NULL;
  4359 	{$$ = NULL;
  4325 	 yynerrs++;
  4360 	 yynerrs++;
  4326 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown variable type defined in global variable declaration.");
  4361 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown variable type defined in global variable declaration.");
  4327 	}
  4362 	}
  4328 | global_var_spec ':' error
  4363 | global_var_spec ':' error
  4329 	{$$ = NULL;
  4364 	{$$ = NULL;
  4330 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in global variable declaration.");
  4365 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in global variable declaration.");
  4331 	 yyerrok;
  4366 	 yyerrok;
  4332 	}
  4367 	}
  4333 /* ERROR_CHECK_END */
  4368 /* ERROR_CHECK_END */
  4334 ;
  4369 ;
  4335 
  4370 
  4360   AT direct_variable
  4395   AT direct_variable
  4361 	{$$ = new location_c($2, locloc(@$));}
  4396 	{$$ = new location_c($2, locloc(@$));}
  4362 /* ERROR_CHECK_BEGIN */
  4397 /* ERROR_CHECK_BEGIN */
  4363 | AT error
  4398 | AT error
  4364 	{$$ = NULL;
  4399 	{$$ = NULL;
  4365 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid location in location declaration.");
  4400 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid location in location declaration.");
  4366 	 yyerrok;
  4401 	 yyerrok;
  4367 	}
  4402 	}
  4368 /* ERROR_CHECK_END */
  4403 /* ERROR_CHECK_END */
  4369 ;
  4404 ;
  4370 
  4405 
  4379 	{$$ = $1; $$->add_element($3);
  4414 	{$$ = $1; $$->add_element($3);
  4380 	 variable_name_symtable.insert($3, prev_declared_global_var_name_token);
  4415 	 variable_name_symtable.insert($3, prev_declared_global_var_name_token);
  4381 	}
  4416 	}
  4382 /* ERROR_CHECK_BEGIN */
  4417 /* ERROR_CHECK_BEGIN */
  4383 | global_var_list global_var_name
  4418 | global_var_list global_var_name
  4384 	{$$ = NULL;
  4419 	{$$ = new global_var_list_c(locloc(@$));
  4385 	 yynerrs++;
  4420 	 yynerrs++;
  4386 	 print_err_msg(current_filename, locf(@2), locl(@2), "',' missing in global variable list.");
  4421 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in global variable list.");
  4387 	}
  4422 	}
  4388 | global_var_list ',' error
  4423 | global_var_list ',' error
  4389 	{$$ = NULL;
  4424 	{$$ = $1;
  4390 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ',' in global variable declaration.");
  4425 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ',' in global variable declaration.");
  4391 	 yyerrok;
  4426 	 yyerrok;
  4392 	}
  4427 	}
  4393 /* ERROR_CHECK_END */
  4428 /* ERROR_CHECK_END */
  4394 ;
  4429 ;
  4405 	{$$ = new single_byte_string_var_declaration_c($1, $3, locloc(@$));}
  4440 	{$$ = new single_byte_string_var_declaration_c($1, $3, locloc(@$));}
  4406 /* ERROR_CHECK_BEGIN */
  4441 /* ERROR_CHECK_BEGIN */
  4407 | var1_list single_byte_string_spec
  4442 | var1_list single_byte_string_spec
  4408 	{$$ = NULL;
  4443 	{$$ = NULL;
  4409 	 yynerrs++;
  4444 	 yynerrs++;
  4410 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and string type specification.");
  4445 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and string type specification.");
  4411 	}
  4446 	}
  4412 /* ERROR_CHECK_END */
  4447 /* ERROR_CHECK_END */
  4413 ;
  4448 ;
  4414 
  4449 
  4415 /* NOTE: The constructs
  4450 /* NOTE: The constructs
  4457 | STRING '[' integer ']' ASSIGN single_byte_character_string
  4492 | STRING '[' integer ']' ASSIGN single_byte_character_string
  4458 	{$$ = new single_byte_string_spec_c($3, $6, locloc(@$));}
  4493 	{$$ = new single_byte_string_spec_c($3, $6, locloc(@$));}
  4459 /* ERROR_CHECK_BEGIN */
  4494 /* ERROR_CHECK_BEGIN */
  4460 | STRING '[' error ']'
  4495 | STRING '[' error ']'
  4461 	{$$ = NULL;
  4496 	{$$ = NULL;
  4462 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid length value for limited string type specification.");
  4497 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid length value for limited string type specification.");
  4463 	 yyerrok;
  4498 	 yyerrok;
  4464 	}
  4499 	}
  4465 | STRING '[' error ']' ASSIGN single_byte_character_string
  4500 | STRING '[' error ']' ASSIGN single_byte_character_string
  4466 	{$$ = NULL;
  4501 	{$$ = NULL;
  4467 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid length value for limited string type specification.");
  4502 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid length value for limited string type specification.");
  4468 	 yyerrok;
  4503 	 yyerrok;
  4469 	}
  4504 	}
  4470 | STRING '[' ']'
  4505 | STRING '[' ']'
  4471 	{$$ = NULL;
  4506 	{$$ = NULL;
  4472 	 yynerrs++;
  4507 	 yynerrs++;
  4473 	 print_err_msg(current_filename, locf(@2), locl(@3), "missing length value for limited string type specification.");
  4508 	 print_err_msg(current_filename, locl(@2), locf(@3), "missing length value for limited string type specification.");
  4474 	}
  4509 	}
  4475 | STRING '[' ']' ASSIGN single_byte_character_string
  4510 | STRING '[' ']' ASSIGN single_byte_character_string
  4476 	{$$ = NULL;
  4511 	{$$ = NULL;
  4477 	 yynerrs++;
  4512 	 yynerrs++;
  4478 	 print_err_msg(current_filename, locf(@2), locl(@3), "missing length value for limited string type specification.");
  4513 	 print_err_msg(current_filename, locl(@2), locf(@3), "missing length value for limited string type specification.");
  4479 	}
  4514 	}
  4480 | STRING '[' integer error
  4515 | STRING '[' integer error
  4481 	{$$ = NULL;
  4516 	{$$ = NULL;
  4482 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ']' after length definition for limited string type specification.");
  4517 	 print_err_msg(current_filename, locl(@3), locf(@4), "expecting ']' after length definition for limited string type specification.");
  4483 	 yyerrok;
  4518 	 yyerrok;
  4484 	}
  4519 	}
  4485 | STRING '[' integer error ASSIGN single_byte_character_string
  4520 | STRING '[' integer error ASSIGN single_byte_character_string
  4486 	{$$ = NULL;
  4521 	{$$ = NULL;
  4487 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting ']' after length definition for limited string type specification.");
  4522 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting ']' after length definition for limited string type specification.");
  4488 	 yyerrok;
  4523 	 yyerrok;
  4489 	}
  4524 	}
  4490 | STRING '[' integer ']' single_byte_character_string
  4525 | STRING '[' integer ']' single_byte_character_string
  4491 	{$$ = NULL;
  4526 	{$$ = NULL;
  4492 	 yynerrs++;
  4527 	 yynerrs++;
  4493 	 print_err_msg(current_filename, locf(@4), locl(@5), "':=' missing before limited string type initialization.");
  4528 	 print_err_msg(current_filename, locl(@4), locf(@5), "':=' missing before limited string type initialization.");
  4494 	}
  4529 	}
  4495 | STRING '[' integer ']' ASSIGN error
  4530 | STRING '[' integer ']' ASSIGN error
  4496 	{$$ = NULL;
  4531 	{$$ = NULL;
  4497 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid value for limited string type initialization.");
  4532 	 print_err_msg(current_filename, locf(@6), locl(@6), "invalid value for limited string type initialization.");
  4498 	 yyerrok;
  4533 	 yyerrok;
  4499 	}
  4534 	}
  4500 /* ERROR_CHECK_END */
  4535 /* ERROR_CHECK_END */
  4501 ;
  4536 ;
  4502 
  4537 
  4506 	{$$ = new double_byte_string_var_declaration_c($1, $3, locloc(@$));}
  4541 	{$$ = new double_byte_string_var_declaration_c($1, $3, locloc(@$));}
  4507 /* ERROR_CHECK_BEGIN */
  4542 /* ERROR_CHECK_BEGIN */
  4508 | var1_list double_byte_string_spec
  4543 | var1_list double_byte_string_spec
  4509 	{$$ = NULL;
  4544 	{$$ = NULL;
  4510 	 yynerrs++;
  4545 	 yynerrs++;
  4511 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between variable list and double byte string type specification.");
  4546 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between variable list and double byte string type specification.");
  4512 	}
  4547 	}
  4513 /* ERROR_CHECK_END */
  4548 /* ERROR_CHECK_END */
  4514 ;
  4549 ;
  4515 
  4550 
  4516 double_byte_string_spec:
  4551 double_byte_string_spec:
  4526 | WSTRING '[' integer ']' ASSIGN double_byte_character_string
  4561 | WSTRING '[' integer ']' ASSIGN double_byte_character_string
  4527 	{$$ = new double_byte_string_spec_c($3, $6, locloc(@$));}
  4562 	{$$ = new double_byte_string_spec_c($3, $6, locloc(@$));}
  4528 /* ERROR_CHECK_BEGIN */
  4563 /* ERROR_CHECK_BEGIN */
  4529 | WSTRING '[' error ']'
  4564 | WSTRING '[' error ']'
  4530 	{$$ = NULL;
  4565 	{$$ = NULL;
  4531 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid length value for limited double byte string type specification.");
  4566 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid length value for limited double byte string type specification.");
  4532 	 yyerrok;
  4567 	 yyerrok;
  4533 	}
  4568 	}
  4534 | WSTRING '[' error ']' ASSIGN single_byte_character_string
  4569 | WSTRING '[' error ']' ASSIGN single_byte_character_string
  4535 	{$$ = NULL;
  4570 	{$$ = NULL;
  4536 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid length value for limited double byte string type specification.");
  4571 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid length value for limited double byte string type specification.");
  4537 	 yyerrok;
  4572 	 yyerrok;
  4538 	}
  4573 	}
  4539 | WSTRING '[' ']'
  4574 | WSTRING '[' ']'
  4540 	{$$ = NULL;
  4575 	{$$ = NULL;
  4541 	 yynerrs++;
  4576 	 yynerrs++;
  4542 	 print_err_msg(current_filename, locf(@2), locl(@3), "missing length value for limited double byte string type specification.");
  4577 	 print_err_msg(current_filename, locl(@2), locf(@3), "missing length value for limited double byte string type specification.");
  4543 	}
  4578 	}
  4544 | WSTRING '[' ']' ASSIGN single_byte_character_string
  4579 | WSTRING '[' ']' ASSIGN single_byte_character_string
  4545 	{$$ = NULL;
  4580 	{$$ = NULL;
  4546 	 yynerrs++;
  4581 	 yynerrs++;
  4547 	 print_err_msg(current_filename, locf(@2), locl(@3), "missing length value for limited double byte string type specification.");
  4582 	 print_err_msg(current_filename, locl(@2), locf(@3), "missing length value for limited double byte string type specification.");
  4548 	}
  4583 	}
  4549 | WSTRING '[' integer error
  4584 | WSTRING '[' integer error
  4550 	{$$ = NULL;
  4585 	{$$ = NULL;
  4551 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ']' after length definition for limited double byte string type specification.");
  4586 	 print_err_msg(current_filename, locl(@3), locf(@4), "expecting ']' after length definition for limited double byte string type specification.");
  4552 	 yyerrok;
  4587 	 yyerrok;
  4553 	}
  4588 	}
  4554 | WSTRING '[' integer error ASSIGN single_byte_character_string
  4589 | WSTRING '[' integer error ASSIGN single_byte_character_string
  4555 	{$$ = NULL;
  4590 	{$$ = NULL;
  4556 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting ']' after length definition for limited double byte string type specification.");
  4591 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting ']' after length definition for limited double byte string type specification.");
  4557 	 yyerrok;
  4592 	 yyerrok;
  4558 	}
  4593 	}
  4559 | WSTRING '[' integer ']' single_byte_character_string
  4594 | WSTRING '[' integer ']' single_byte_character_string
  4560 	{$$ = NULL;
  4595 	{$$ = NULL;
  4561 	 yynerrs++;
  4596 	 yynerrs++;
  4562 	 print_err_msg(current_filename, locf(@4), locl(@5), "':=' missing before limited double byte string type initialization.");
  4597 	 print_err_msg(current_filename, locl(@4), locf(@5), "':=' missing before limited double byte string type initialization.");
  4563 	}
  4598 	}
  4564 | WSTRING '[' integer ']' ASSIGN error
  4599 | WSTRING '[' integer ']' ASSIGN error
  4565 	{$$ = NULL;
  4600 	{$$ = NULL;
  4566 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid value for limited double byte string type initialization.");
  4601 	 print_err_msg(current_filename, locf(@6), locl(@6), "invalid value for limited double byte string type initialization.");
  4567 	 yyerrok;
  4602 	 yyerrok;
  4568 	}
  4603 	}
  4569 /* ERROR_CHECK_END */
  4604 /* ERROR_CHECK_END */
  4570 ;
  4605 ;
  4571 
  4606 
  4579 | VAR NON_RETAIN incompl_located_var_decl_list END_VAR
  4614 | VAR NON_RETAIN incompl_located_var_decl_list END_VAR
  4580 	{$$ = new incompl_located_var_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  4615 	{$$ = new incompl_located_var_declarations_c(new non_retain_option_c(locloc(@2)), $3, locloc(@$));}
  4581 /* ERROR_CHECK_BEGIN */
  4616 /* ERROR_CHECK_BEGIN */
  4582 | VAR error incompl_located_var_decl_list END_VAR
  4617 | VAR error incompl_located_var_decl_list END_VAR
  4583 	{$$ = NULL;
  4618 	{$$ = NULL;
  4584 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR' in incomplete located variable(s) declaration.");
  4619 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR' in incomplete located variable(s) declaration.");
  4585 	 yyerrok;
  4620 	 yyerrok;
  4586 	}
  4621 	}
  4587 | VAR RETAIN error incompl_located_var_decl_list END_VAR
  4622 | VAR RETAIN error incompl_located_var_decl_list END_VAR
  4588 	{$$ = NULL;
  4623 	{$$ = NULL;
  4589 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive located variable(s) declaration.");
  4624 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive located variable(s) declaration.");
  4590 	 yyerrok;
  4625 	 yyerrok;
  4591 	}
  4626 	}
  4592 | VAR NON_RETAIN error incompl_located_var_decl_list END_VAR
  4627 | VAR NON_RETAIN error incompl_located_var_decl_list END_VAR
  4593 	{$$ = NULL;
  4628 	{$$ = NULL;
  4594 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive located variable(s) declaration.");
  4629 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive located variable(s) declaration.");
  4595 	 yyerrok;
  4630 	 yyerrok;
  4596 	}
  4631 	}
  4597 /* ERROR_CHECK_END */
  4632 /* ERROR_CHECK_END */
  4598 ;
  4633 ;
  4599 
  4634 
  4603 	{$$ = new incompl_located_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4638 	{$$ = new incompl_located_var_decl_list_c(locloc(@$)); $$->add_element($1);}
  4604 | incompl_located_var_decl_list incompl_located_var_decl ';'
  4639 | incompl_located_var_decl_list incompl_located_var_decl ';'
  4605 	{$$ = $1; $$->add_element($2);}
  4640 	{$$ = $1; $$->add_element($2);}
  4606 /* ERROR_CHECK_BEGIN */
  4641 /* ERROR_CHECK_BEGIN */
  4607 | incompl_located_var_decl error
  4642 | incompl_located_var_decl error
  4608 	{$$ = NULL;
  4643 	{$$ = new incompl_located_var_decl_list_c(locloc(@$));
  4609 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of incomplete located variable declaration.");
  4644 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of incomplete located variable declaration.");
  4610 	 yyerrok;
  4645 	 yyerrok;
  4611 	}
  4646 	}
  4612 | incompl_located_var_decl_list incompl_located_var_decl error
  4647 | incompl_located_var_decl_list incompl_located_var_decl error
  4613 	{$$ = NULL;
  4648 	{$$ = $1;
  4614 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of incomplete located variable declaration.");
  4649 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of incomplete located variable declaration.");
  4615 	 yyerrok;
  4650 	 yyerrok;
  4616 	}
  4651 	}
  4617 | incompl_located_var_decl_list error ';'
  4652 | incompl_located_var_decl_list error ';'
  4618 	{$$ = NULL;
  4653 	{$$ = $1;
  4619 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid incomplete located variable declaration.");
  4654 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid incomplete located variable declaration.");
  4620 	 yyerrok;
  4655 	 yyerrok;
  4621 	}
  4656 	}
  4622 | incompl_located_var_decl_list ';'
  4657 | incompl_located_var_decl_list ';'
  4623 	{$$ = NULL;
  4658 	{$$ = $1;
  4624 	 yynerrs++;
  4659 	 yynerrs++;
  4625 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after incomplete located variable declaration.");
  4660 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after incomplete located variable declaration.");
  4626 	}
  4661 	}
  4627 /* ERROR_CHECK_END */
  4662 /* ERROR_CHECK_END */
  4628 ;
  4663 ;
  4630 
  4665 
  4631 incompl_located_var_decl:
  4666 incompl_located_var_decl:
  4632   variable_name incompl_location ':' var_spec
  4667   variable_name incompl_location ':' var_spec
  4633 	{$$ = new incompl_located_var_decl_c($1, $2, $4, locloc(@$));}
  4668 	{$$ = new incompl_located_var_decl_c($1, $2, $4, locloc(@$));}
  4634 /* ERROR_CHECK_BEGIN */
  4669 /* ERROR_CHECK_BEGIN */
       
  4670 | variable_name incompl_location var_spec
       
  4671 	{$$ = NULL;
       
  4672 	 yynerrs++;
       
  4673 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing between incomplete located variable and type specification.");
       
  4674 	}
  4635 | variable_name incompl_location ':' error
  4675 | variable_name incompl_location ':' error
  4636 	{$$ = NULL;
  4676 	{$$ = NULL;
  4637 	 print_err_msg(current_filename, locf(@2), locl(@2), "no specification defined in incomplete located variable declaration.");
  4677 	 print_err_msg(current_filename, locl(@2), locf(@3), "no specification defined in incomplete located variable declaration.");
  4638 	 yyerrok;
  4678 	 yyerrok;
  4639 	}
       
  4640 | variable_name incompl_location var_spec
       
  4641 	{$$ = NULL;
       
  4642 	 yynerrs++;
       
  4643 	 print_err_msg(current_filename, locf(@2), locl(@2), "':' missing between incomplete located variable and type specification.");
       
  4644 	}
  4679 	}
  4645 /* ERROR_CHECK_END */
  4680 /* ERROR_CHECK_END */
  4646 ;
  4681 ;
  4647 
  4682 
  4648 
  4683 
  4699 	{$$ = new var_init_decl_list_c(locloc(@$)); $$->add_element($1);}
  4734 	{$$ = new var_init_decl_list_c(locloc(@$)); $$->add_element($1);}
  4700 | var_init_decl_list var_init_decl ';'
  4735 | var_init_decl_list var_init_decl ';'
  4701 	{$$ = $1; $$->add_element($2);}
  4736 	{$$ = $1; $$->add_element($2);}
  4702 /* ERROR_CHECK_BEGIN */
  4737 /* ERROR_CHECK_BEGIN */
  4703 | var_init_decl_list var_init_decl error
  4738 | var_init_decl_list var_init_decl error
  4704 	{$$ = NULL;
  4739 	{$$ = $1;
  4705 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of variable(s) declaration.");
  4740 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of variable(s) declaration.");
  4706 	 yyerrok;
  4741 	 yyerrok;
  4707 	}
  4742 	}
  4708 | var_init_decl_list error ';'
  4743 | var_init_decl_list error ';'
  4709 	{$$ = NULL;
  4744 	{$$ = $1;
  4710 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid variable(s) declaration.");
  4745 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid variable(s) declaration.");
  4711 	 yyerrok;
  4746 	 yyerrok;
  4712 	}
  4747 	}
  4713 /* ERROR_CHECK_END */
  4748 /* ERROR_CHECK_END */
  4714 ;
  4749 ;
  4715 
  4750 
  4923 	}
  4958 	}
  4924 /* ERROR_CHECK_BEGIN */
  4959 /* ERROR_CHECK_BEGIN */
  4925 | function_name_declaration elementary_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4960 | function_name_declaration elementary_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4926 	{$$ = NULL;
  4961 	{$$ = NULL;
  4927 	 yynerrs++;
  4962 	 yynerrs++;
  4928 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing after function name in function declaration.");
  4963 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing after function name in function declaration.");
  4929 	}
  4964 	}
  4930 | function_name_declaration derived_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4965 | function_name_declaration derived_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4931 	{$$ = NULL;
  4966 	{$$ = NULL;
  4932 	 yynerrs++;
  4967 	 yynerrs++;
  4933 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing after function name in function declaration.");
  4968 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing after function name in function declaration.");
  4934 	}
  4969 	}
  4935 | function_name_declaration error derived_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4970 | function_name_declaration error derived_type_name io_OR_function_var_declarations_list function_body END_FUNCTION
  4936 	{$$ = NULL;
  4971 	{$$ = NULL;
  4937 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting ':' after function name in function declaration.");
  4972 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':' after function name in function declaration.");
  4938 	 yyerrok;
  4973 	 yyerrok;
  4939 	}
  4974 	}
  4940 | function_name_declaration ':' io_OR_function_var_declarations_list function_body END_FUNCTION
  4975 | function_name_declaration ':' io_OR_function_var_declarations_list function_body END_FUNCTION
  4941 	{$$ = NULL;
  4976 	{$$ = NULL;
  4942 	 yynerrs++;
  4977 	 yynerrs++;
  4943 	 print_err_msg(current_filename, locf(@2), locl(@3), "no return type defined in function declaration.");
  4978 	 print_err_msg(current_filename, locl(@2), locf(@3), "no return type defined in function declaration.");
  4944 	}
  4979 	}
  4945 | function_name_declaration ':' error io_OR_function_var_declarations_list function_body END_FUNCTION
  4980 | function_name_declaration ':' error io_OR_function_var_declarations_list function_body END_FUNCTION
  4946 	{$$ = NULL;
  4981 	{$$ = NULL;
  4947 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid return type defined in function declaration.");
  4982 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid return type defined in function declaration.");
  4948 	 yyerrok;
  4983 	 yyerrok;
  4949 	}
  4984 	}
  4950 | function_name_declaration ':' identifier io_OR_function_var_declarations_list function_body END_FUNCTION
  4985 | function_name_declaration ':' identifier io_OR_function_var_declarations_list function_body END_FUNCTION
  4951 	{$$ = NULL;
  4986 	{$$ = NULL;
  4952 	 yynerrs++;
  4987 	 yynerrs++;
  4953 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown return type defined in function declaration.");
  4988 	 print_err_msg(current_filename, locf(@3), locl(@3), "unknown return type defined in function declaration.");
  4954 	}
  4989 	}
  4955 | function_name_declaration ':' elementary_type_name function_body END_FUNCTION
  4990 | function_name_declaration ':' elementary_type_name function_body END_FUNCTION
  4956 	{$$ = NULL;
  4991 	{$$ = NULL;
  4957 	 yynerrs++;
  4992 	 yynerrs++;
  4958 	 print_err_msg(current_filename, locf(@3), locl(@4), "no variable(s) declared in function declaration.");
  4993 	 print_err_msg(current_filename, locl(@3), locf(@4), "no variable(s) declared in function declaration.");
  4959 	}
  4994 	}
  4960 | function_name_declaration ':' derived_type_name function_body END_FUNCTION
  4995 | function_name_declaration ':' derived_type_name function_body END_FUNCTION
  4961 	{$$ = NULL;
  4996 	{$$ = NULL;
  4962 	 yynerrs++;
  4997 	 yynerrs++;
  4963 	 print_err_msg(current_filename, locf(@3), locl(@4), "no variable(s) declared in function declaration.");
  4998 	 print_err_msg(current_filename, locl(@3), locf(@4), "no variable(s) declared in function declaration.");
  4964 	}
  4999 	}
  4965 | function_name_declaration ':' elementary_type_name io_OR_function_var_declarations_list END_FUNCTION
  5000 | function_name_declaration ':' elementary_type_name io_OR_function_var_declarations_list END_FUNCTION
  4966 	{$$ = NULL;
  5001 	{$$ = NULL;
  4967 	 yynerrs++;
  5002 	 yynerrs++;
  4968 	 print_err_msg(current_filename, locf(@4), locl(@5), "no body defined in function declaration.");
  5003 	 print_err_msg(current_filename, locl(@4), locf(@5), "no body defined in function declaration.");
  4969 	}
  5004 	}
  4970 | function_name_declaration ':' derived_type_name io_OR_function_var_declarations_list END_FUNCTION
  5005 | function_name_declaration ':' derived_type_name io_OR_function_var_declarations_list END_FUNCTION
  4971 	{$$ = NULL;
  5006 	{$$ = NULL;
  4972 	 yynerrs++;
  5007 	 yynerrs++;
  4973 	 print_err_msg(current_filename, locf(@4), locl(@5), "no body defined in function declaration.");
  5008 	 print_err_msg(current_filename, locl(@4), locf(@5), "no body defined in function declaration.");
  4974 	}
  5009 	}
  4975 | function_name_declaration ':' elementary_type_name END_FUNCTION
  5010 | function_name_declaration ':' elementary_type_name END_FUNCTION
  4976 	{$$ = NULL;
  5011 	{$$ = NULL;
  4977 	 yynerrs++;
  5012 	 yynerrs++;
  4978 	 print_err_msg(current_filename, locf(@3), locl(@4), "no variable(s) declared and body defined in function declaration.");
  5013 	 print_err_msg(current_filename, locl(@3), locf(@4), "no variable(s) declared and body defined in function declaration.");
  4979 	}
  5014 	}
  4980 | function_name_declaration ':' derived_type_name END_FUNCTION
  5015 | function_name_declaration ':' derived_type_name END_FUNCTION
  4981 	{$$ = NULL;
  5016 	{$$ = NULL;
  4982 	 yynerrs++;
  5017 	 yynerrs++;
  4983 	 print_err_msg(current_filename, locf(@3), locl(@4), "no variable(s) declared and body defined in function declaration.");
  5018 	 print_err_msg(current_filename, locl(@3), locf(@4), "no variable(s) declared and body defined in function declaration.");
  4984 	}
  5019 	}
  4985 | function_name_declaration error END_FUNCTION
  5020 | function_name_declaration error END_FUNCTION
  4986 	{$$ = NULL;
  5021 	{$$ = NULL;
  4987 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in function declaration.");
  5022 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in function declaration.");
  4988 	 yyerrok;
  5023 	 yyerrok;
  4989 	}
  5024 	}
  4990 /* ERROR_CHECK_END */
  5025 /* ERROR_CHECK_END */
  4991 ;
  5026 ;
  4992 
  5027 
  5035 	 variable_name_symtable.insert($2, prev_declared_variable_name_token);
  5070 	 variable_name_symtable.insert($2, prev_declared_variable_name_token);
  5036 	}
  5071 	}
  5037 /* ERROR_CHECK_BEGIN */
  5072 /* ERROR_CHECK_BEGIN */
  5038 | FUNCTION error 
  5073 | FUNCTION error 
  5039 	{$$ = NULL;
  5074 	{$$ = NULL;
  5040 	 print_err_msg(current_filename, locf(@1), locl(@1), "no function name defined in function declaration.");
  5075 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function name defined in function declaration.");
  5041 	 yyerrok;
  5076 	 yyerrok;
  5042 	}
  5077 	}
  5043 /* ERROR_CHECK_END */
  5078 /* ERROR_CHECK_END */
  5044 ;
  5079 ;
  5045 
  5080 
  5053 	{$$ = new var_declarations_list_c(locloc(@1));$$->add_element($1);}
  5088 	{$$ = new var_declarations_list_c(locloc(@1));$$->add_element($1);}
  5054 | io_OR_function_var_declarations_list io_var_declarations
  5089 | io_OR_function_var_declarations_list io_var_declarations
  5055 	{$$ = $1; $$->add_element($2);}
  5090 	{$$ = $1; $$->add_element($2);}
  5056 | io_OR_function_var_declarations_list function_var_decls
  5091 | io_OR_function_var_declarations_list function_var_decls
  5057 	{$$ = $1; $$->add_element($2);}
  5092 	{$$ = $1; $$->add_element($2);}
       
  5093 /* ERROR_CHECK_BEGIN */
       
  5094 | io_OR_function_var_declarations_list retentive_var_declarations
       
  5095 	{$$ = $1;
       
  5096 	 yynerrs++;
       
  5097 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected retentive variable(s) declaration in function declaration.");
       
  5098 	}
       
  5099 | io_OR_function_var_declarations_list located_var_declarations
       
  5100 	{$$ = $1;
       
  5101 	 yynerrs++;
       
  5102 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected located variable(s) declaration in function declaration.");
       
  5103 	}
       
  5104 | io_OR_function_var_declarations_list external_var_declarations
       
  5105 	{$$ = $1;
       
  5106 	 yynerrs++;
       
  5107 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected external variable(s) declaration in function declaration.");
       
  5108 	}
       
  5109 | io_OR_function_var_declarations_list global_var_declarations
       
  5110 	{$$ = $1;
       
  5111 	 yynerrs++;
       
  5112 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected global variable(s) declaration in function declaration.");
       
  5113 	}
       
  5114 | io_OR_function_var_declarations_list incompl_located_var_declarations
       
  5115 	{$$ = $1;
       
  5116 	 yynerrs++;
       
  5117 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected incomplete located variable(s) declaration in function declaration.");
       
  5118 	}
       
  5119 | io_OR_function_var_declarations_list temp_var_decls
       
  5120 	{$$ = $1;
       
  5121 	 yynerrs++;
       
  5122 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected temporary located variable(s) declaration in function declaration.");
       
  5123 	}
       
  5124 | io_OR_function_var_declarations_list non_retentive_var_decls
       
  5125 	{$$ = $1;
       
  5126 	 yynerrs++;
       
  5127 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected non-retentive variable(s) declaration in function declaration.");
       
  5128 	}
       
  5129 /*| io_OR_function_var_declarations_list access_declarations
       
  5130 	{$$ = $1;
       
  5131 	 yynerrs++;
       
  5132 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected access variable(s) declaration in function declaration.");
       
  5133 	}*/
       
  5134 | io_OR_function_var_declarations_list instance_specific_initializations
       
  5135 	{$$ = $1;
       
  5136 	 yynerrs++;
       
  5137 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected instance specific initialization(s) in function declaration.");
       
  5138 	}
       
  5139 /* ERROR_CHECK_END */
  5058 ;
  5140 ;
  5059 
  5141 
  5060 
  5142 
  5061 io_var_declarations:
  5143 io_var_declarations:
  5062   input_declarations
  5144   input_declarations
  5071 | VAR var2_init_decl_list END_VAR
  5153 | VAR var2_init_decl_list END_VAR
  5072 	{$$ = new function_var_decls_c(NULL, $2, locloc(@$));}
  5154 	{$$ = new function_var_decls_c(NULL, $2, locloc(@$));}
  5073 /* ERROR_CHECK_BEGIN */
  5155 /* ERROR_CHECK_BEGIN */
  5074 | VAR error var_init_decl_list END_VAR
  5156 | VAR error var_init_decl_list END_VAR
  5075 	{$$ = NULL;
  5157 	{$$ = NULL;
  5076 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR' in function variable(s) declaration.");
  5158 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR' in function variable(s) declaration.");
  5077 	 yyerrok;
  5159 	 yyerrok;
  5078 	}
  5160 	}
  5079 | VAR CONSTANT error var_init_decl_list END_VAR
  5161 | VAR CONSTANT error var_init_decl_list END_VAR
  5080 	{$$ = NULL;
  5162 	{$$ = NULL;
  5081 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'CONSTANT' in constant function variable(s) declaration.");
  5163 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'CONSTANT' in constant function variable(s) declaration.");
  5082 	 yyerrok;
  5164 	 yyerrok;
  5083 	}
  5165 	}
  5084 /* ERROR_CHECK_END */
  5166 /* ERROR_CHECK_END */
  5085 ;
  5167 ;
  5086 
  5168 
  5090 	{$$ = new var2_init_decl_list_c(locloc(@$)); $$->add_element($1);}
  5172 	{$$ = new var2_init_decl_list_c(locloc(@$)); $$->add_element($1);}
  5091 | var2_init_decl_list var2_init_decl ';'
  5173 | var2_init_decl_list var2_init_decl ';'
  5092 	{$$ = $1; $$->add_element($2);}
  5174 	{$$ = $1; $$->add_element($2);}
  5093 /* ERROR_CHECK_BEGIN */
  5175 /* ERROR_CHECK_BEGIN */
  5094 | var2_init_decl error
  5176 | var2_init_decl error
  5095 	{$$ = NULL;
  5177 	{$$ = new var2_init_decl_list_c(locloc(@$));
  5096 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of function variable(s) declaration.");
  5178 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of function variable(s) declaration.");
  5097 	 yyerrok;
  5179 	 yyerrok;
  5098 	}
  5180 	}
  5099 | var2_init_decl_list var2_init_decl error
  5181 | var2_init_decl_list var2_init_decl error
  5100 	{$$ = NULL;
  5182 	{$$ = $1;
  5101 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of function variable(s) declaration.");
  5183 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of function variable(s) declaration.");
  5102 	 yyerrok;
  5184 	 yyerrok;
  5103 	}
  5185 	}
  5104 | var2_init_decl_list error ';'
  5186 | var2_init_decl_list error ';'
  5105 	{$$ = NULL;
  5187 	{$$ = $1;
  5106 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid function variable(s) declaration.");
  5188 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function variable(s) declaration.");
  5107 	 yyerrok;
  5189 	 yyerrok;
  5108 	}
  5190 	}
  5109 | var2_init_decl_list ';'
  5191 | var2_init_decl_list ';'
  5110 	{$$ = NULL;
  5192 	{$$ = $1;
  5111 	 yynerrs++;
  5193 	 yynerrs++;
  5112 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after function variable(s) declaration.");
  5194 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after function variable(s) declaration.");
  5113 	}
  5195 	}
  5114 /* ERROR_CHECK_END */
  5196 /* ERROR_CHECK_END */
  5115 ;
  5197 ;
  5161 	}
  5243 	}
  5162 /* ERROR_CHECK_BEGIN */
  5244 /* ERROR_CHECK_BEGIN */
  5163 | FUNCTION_BLOCK io_OR_other_var_declarations_list function_block_body END_FUNCTION_BLOCK
  5245 | FUNCTION_BLOCK io_OR_other_var_declarations_list function_block_body END_FUNCTION_BLOCK
  5164   {$$ = NULL;
  5246   {$$ = NULL;
  5165 	 yynerrs++;
  5247 	 yynerrs++;
  5166 	 print_err_msg(current_filename, locf(@1), locl(@2), "no function block name defined in function block declaration.");
  5248 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block name defined in function block declaration.");
  5167 	}
  5249 	}
  5168 | FUNCTION_BLOCK error io_OR_other_var_declarations_list function_block_body END_FUNCTION_BLOCK
  5250 | FUNCTION_BLOCK error io_OR_other_var_declarations_list function_block_body END_FUNCTION_BLOCK
  5169 	{$$ = NULL;
  5251 	{$$ = NULL;
  5170 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid function block name in function block declaration.");
  5252 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name in function block declaration.");
  5171 	 yyerrok;
  5253 	 yyerrok;
  5172 	}
  5254 	}
  5173 | FUNCTION_BLOCK derived_function_block_name function_block_body END_FUNCTION_BLOCK
  5255 | FUNCTION_BLOCK derived_function_block_name function_block_body END_FUNCTION_BLOCK
  5174 	{$$ = NULL;
  5256 	{$$ = NULL;
  5175 	 yynerrs++;
  5257 	 yynerrs++;
  5176 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable(s) declared in function declaration.");
  5258 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable(s) declared in function declaration.");
  5177 	}
  5259 	}
  5178 | FUNCTION_BLOCK derived_function_block_name io_OR_other_var_declarations_list END_FUNCTION_BLOCK
  5260 | FUNCTION_BLOCK derived_function_block_name io_OR_other_var_declarations_list END_FUNCTION_BLOCK
  5179 	{$$ = NULL;
  5261 	{$$ = NULL;
  5180 	 yynerrs++;
  5262 	 yynerrs++;
  5181 	 print_err_msg(current_filename, locf(@3), locl(@4), "no body defined in function block declaration.");
  5263 	 print_err_msg(current_filename, locl(@3), locf(@4), "no body defined in function block declaration.");
  5182 	}
  5264 	}
  5183 | FUNCTION_BLOCK derived_function_block_name END_FUNCTION_BLOCK
  5265 | FUNCTION_BLOCK derived_function_block_name END_FUNCTION_BLOCK
  5184 	{$$ = NULL;
  5266 	{$$ = NULL;
  5185 	 yynerrs++;
  5267 	 yynerrs++;
  5186 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable(s) declared and body defined in function block declaration.");
  5268 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable(s) declared and body defined in function block declaration.");
  5187 	}
  5269 	}
  5188 | FUNCTION_BLOCK error END_FUNCTION_BLOCK
  5270 | FUNCTION_BLOCK error END_FUNCTION_BLOCK
  5189 	{$$ = NULL;
  5271 	{$$ = NULL;
  5190 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in function block declaration.");
  5272 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in function block declaration.");
  5191 	 yyerrok;
  5273 	 yyerrok;
  5192 	}
  5274 	}
  5193 /* ERROR_CHECK_END */
  5275 /* ERROR_CHECK_END */
  5194 ;
  5276 ;
  5195 
  5277 
  5207   {$$ = new var_declarations_list_c(locloc(@$));$$->add_element($1);}
  5289   {$$ = new var_declarations_list_c(locloc(@$));$$->add_element($1);}
  5208 | io_OR_other_var_declarations_list io_var_declarations
  5290 | io_OR_other_var_declarations_list io_var_declarations
  5209 	{$$ = $1; $$->add_element($2);}
  5291 	{$$ = $1; $$->add_element($2);}
  5210 | io_OR_other_var_declarations_list other_var_declarations
  5292 | io_OR_other_var_declarations_list other_var_declarations
  5211 	{$$ = $1; $$->add_element($2);}
  5293 	{$$ = $1; $$->add_element($2);}
       
  5294 /* ERROR_CHECK_BEGIN */
       
  5295 | io_OR_other_var_declarations_list located_var_declarations
       
  5296 	{$$ = $1;
       
  5297 	 yynerrs++;
       
  5298 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected located variable(s) declaration in function block declaration.");
       
  5299 	}
       
  5300 | io_OR_other_var_declarations_list global_var_declarations
       
  5301 	{$$ = $1;
       
  5302 	 yynerrs++;
       
  5303 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected global variable(s) declaration in function block declaration.");
       
  5304 	}
       
  5305 /*| io_OR_other_var_declarations_list access_declarations
       
  5306 	{$$ = $1;
       
  5307 	 yynerrs++;
       
  5308 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected access variable(s) declaration in function block declaration.");
       
  5309 	}*/
       
  5310 | io_OR_other_var_declarations_list instance_specific_initializations
       
  5311 	{$$ = $1;
       
  5312 	 yynerrs++;
       
  5313 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected instance specific initialization(s) in function block declaration.");
       
  5314 	}
       
  5315 /* ERROR_CHECK_END */
  5212 ;
  5316 ;
  5213 
  5317 
  5214 /* NOTE:
  5318 /* NOTE:
  5215  *  The IEC specification gives the following definition:
  5319  *  The IEC specification gives the following definition:
  5216  *  other_var_declarations ::=
  5320  *  other_var_declarations ::=
  5242 	{$$ = new temp_var_decls_c($2, locloc(@$));}
  5346 	{$$ = new temp_var_decls_c($2, locloc(@$));}
  5243 /* ERROR_CHECK_BEGIN */
  5347 /* ERROR_CHECK_BEGIN */
  5244 | VAR_TEMP END_VAR
  5348 | VAR_TEMP END_VAR
  5245 	{$$ = NULL;
  5349 	{$$ = NULL;
  5246 	 yynerrs++;
  5350 	 yynerrs++;
  5247 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in temporary variable(s) declaration.");
  5351 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in temporary variable(s) declaration.");
  5248 	}
  5352 	}
  5249 | VAR_TEMP error temp_var_decls_list END_VAR
  5353 | VAR_TEMP error temp_var_decls_list END_VAR
  5250 	{$$ = NULL;
  5354 	{$$ = NULL;
  5251 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_TEMP' in function variable(s) declaration.");
  5355 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_TEMP' in function variable(s) declaration.");
  5252 	 yyerrok;
  5356 	 yyerrok;
  5253 	}
  5357 	}
  5254 /* ERROR_CHECK_END */
  5358 /* ERROR_CHECK_END */
  5255 ;
  5359 ;
  5256 
  5360 
  5260   temp_var_decl ';'
  5364   temp_var_decl ';'
  5261 	{$$ = new temp_var_decls_list_c(locloc(@$)); $$->add_element($1);}
  5365 	{$$ = new temp_var_decls_list_c(locloc(@$)); $$->add_element($1);}
  5262 | temp_var_decls_list temp_var_decl ';'
  5366 | temp_var_decls_list temp_var_decl ';'
  5263 	{$$ = $1; $$->add_element($2);}
  5367 	{$$ = $1; $$->add_element($2);}
  5264 /* ERROR_CHECK_BEGIN */
  5368 /* ERROR_CHECK_BEGIN */
       
  5369 | error ';'
       
  5370 	{$$ = new temp_var_decls_list_c(locloc(@$));
       
  5371 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid temporary variable(s) declaration.");
       
  5372 	 yyerrok;
       
  5373 	}
  5265 | temp_var_decl error
  5374 | temp_var_decl error
  5266 	{$$ = NULL;
  5375 	{$$ = new temp_var_decls_list_c(locloc(@$));
  5267 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at end of temporary variable(s) declaration.");
  5376 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at end of temporary variable(s) declaration.");
  5268 	 yyerrok;
  5377 	 yyerrok;
  5269 	}
  5378 	}
  5270 | temp_var_decls_list temp_var_decl error
  5379 | temp_var_decls_list temp_var_decl error
  5271 	{$$ = NULL;
  5380 	{$$ = $1;
  5272 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of temporary variable(s) declaration.");
  5381 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of temporary variable(s) declaration.");
  5273 	 yyerrok;
  5382 	 yyerrok;
  5274 	}
  5383 	}
  5275 | temp_var_decls_list error ';'
  5384 | temp_var_decls_list error ';'
  5276 	{$$ = NULL;
  5385 	{$$ = $1;
  5277 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid temporary variable(s) declaration.");
  5386 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid temporary variable(s) declaration.");
  5278 	 yyerrok;
  5387 	 yyerrok;
  5279 	}
  5388 	}
  5280 | temp_var_decls_list ';'
  5389 | temp_var_decls_list ';'
  5281 	{$$ = NULL;
  5390 	{$$ = $1;
  5282 	 yynerrs++;
  5391 	 yynerrs++;
  5283 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after temporary variable(s) declaration.");
  5392 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after temporary variable(s) declaration.");
  5284 	}
  5393 	}
  5285 /* ERROR_CHECK_END */
  5394 /* ERROR_CHECK_END */
  5286 ;
  5395 ;
  5290   VAR NON_RETAIN var_init_decl_list END_VAR
  5399   VAR NON_RETAIN var_init_decl_list END_VAR
  5291 	{$$ = new non_retentive_var_decls_c($3, locloc(@$));}
  5400 	{$$ = new non_retentive_var_decls_c($3, locloc(@$));}
  5292 /* ERROR_CHECK_BEGIN */
  5401 /* ERROR_CHECK_BEGIN */
  5293 | VAR NON_RETAIN error var_init_decl_list END_VAR
  5402 | VAR NON_RETAIN error var_init_decl_list END_VAR
  5294 	{$$ = NULL;
  5403 	{$$ = NULL;
  5295 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive temporary variable(s) declaration.");
  5404 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive temporary variable(s) declaration.");
  5296 	 yyerrok;
  5405 	 yyerrok;
  5297 	}
  5406 	}
  5298 /* ERROR_CHECK_END */
  5407 /* ERROR_CHECK_END */
  5299 ;
  5408 ;
  5300 
  5409 
  5333 	}
  5442 	}
  5334 /* ERROR_CHECK_BEGIN */
  5443 /* ERROR_CHECK_BEGIN */
  5335 | PROGRAM program_var_declarations_list function_block_body END_PROGRAM
  5444 | PROGRAM program_var_declarations_list function_block_body END_PROGRAM
  5336   {$$ = NULL;
  5445   {$$ = NULL;
  5337 	 yynerrs++;
  5446 	 yynerrs++;
  5338 	 print_err_msg(current_filename, locf(@1), locl(@2), "no program name defined in program declaration.");
  5447 	 print_err_msg(current_filename, locl(@1), locf(@2), "no program name defined in program declaration.");
  5339 	}
  5448 	}
  5340 | PROGRAM error program_var_declarations_list function_block_body END_PROGRAM
  5449 | PROGRAM error program_var_declarations_list function_block_body END_PROGRAM
  5341 	{$$ = NULL;
  5450 	{$$ = NULL;
  5342 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid program name in program declaration.");
  5451 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid program name in program declaration.");
  5343 	 yyerrok;
  5452 	 yyerrok;
  5344 	}
  5453 	}
  5345 | PROGRAM program_type_name function_block_body END_PROGRAM
  5454 | PROGRAM program_type_name function_block_body END_PROGRAM
  5346 	{$$ = NULL;
  5455 	{$$ = NULL;
  5347 	 yynerrs++;
  5456 	 yynerrs++;
  5348 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable(s) declared in program declaration.");
  5457 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable(s) declared in program declaration.");
  5349 	}
  5458 	}
  5350 | PROGRAM program_type_name program_var_declarations_list END_PROGRAM
  5459 | PROGRAM program_type_name program_var_declarations_list END_PROGRAM
  5351 	{$$ = NULL;
  5460 	{$$ = NULL;
  5352 	 yynerrs++;
  5461 	 yynerrs++;
  5353 	 print_err_msg(current_filename, locf(@3), locl(@4), "no body defined in program declaration.");
  5462 	 print_err_msg(current_filename, locl(@3), locf(@4), "no body defined in program declaration.");
  5354 	}
  5463 	}
  5355 | PROGRAM program_type_name END_PROGRAM
  5464 | PROGRAM program_type_name END_PROGRAM
  5356 	{$$ = NULL;
  5465 	{$$ = NULL;
  5357 	 yynerrs++;
  5466 	 yynerrs++;
  5358 	 print_err_msg(current_filename, locf(@2), locl(@3), "no variable(s) declared and body defined in program declaration.");
  5467 	 print_err_msg(current_filename, locl(@2), locf(@3), "no variable(s) declared and body defined in program declaration.");
  5359 	}
  5468 	}
  5360 | PROGRAM error END_PROGRAM
  5469 | PROGRAM error END_PROGRAM
  5361 	{$$ = NULL;
  5470 	{$$ = NULL;
  5362 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in program declaration.");
  5471 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in program declaration.");
  5363 	 yyerrok;
  5472 	 yyerrok;
  5364 	}
  5473 	}
  5365 /* ERROR_CHECK_END */
  5474 /* ERROR_CHECK_END */
  5366 ;
  5475 ;
  5367 
  5476 
  5385 	{$$ = $1; $$->add_element($2);}
  5494 	{$$ = $1; $$->add_element($2);}
  5386 /*
  5495 /*
  5387 | program_var_declarations_list program_access_decls
  5496 | program_var_declarations_list program_access_decls
  5388 	{$$ = $1; $$->add_element($2);}
  5497 	{$$ = $1; $$->add_element($2);}
  5389 */
  5498 */
       
  5499 /* ERROR_CHECK_BEGIN */
       
  5500 | program_var_declarations_list global_var_declarations
       
  5501 	{$$ = $1;
       
  5502 	 yynerrs++;
       
  5503 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected global variable(s) declaration in function block declaration.");
       
  5504 	}
       
  5505 /*| program_var_declarations_list access_declarations
       
  5506 	{$$ = $1;
       
  5507 	 yynerrs++;
       
  5508 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected access variable(s) declaration in function block declaration.");
       
  5509 	}*/
       
  5510 | program_var_declarations_list instance_specific_initializations
       
  5511 	{$$ = $1;
       
  5512 	 yynerrs++;
       
  5513 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected instance specific initialization(s) in function block declaration.");
       
  5514 	}
       
  5515 /* ERROR_CHECK_END */
  5390 ;
  5516 ;
  5391 
  5517 
  5392 
  5518 
  5393 /* TODO ... */
  5519 /* TODO ... */
  5394 /*
  5520 /*
  5435 | sfc_network action
  5561 | sfc_network action
  5436 	{$$ = $1; $$->add_element($2);}
  5562 	{$$ = $1; $$->add_element($2);}
  5437 /* ERROR_CHECK_BEGIN */
  5563 /* ERROR_CHECK_BEGIN */
  5438 | sfc_network error 
  5564 | sfc_network error 
  5439 	{$$ = NULL;
  5565 	{$$ = NULL;
  5440 	 print_err_msg(current_filename, locf(@1), locl(@1), "unexpected token after SFC network in sequencial function chart.");
  5566 	 print_err_msg(current_filename, locl(@1), locf(@2), "unexpected token after SFC network in sequencial function chart.");
  5441 	 yyerrok;
  5567 	 yyerrok;
  5442 	}
  5568 	}
  5443 /* ERROR_CHECK_END */
  5569 /* ERROR_CHECK_END */
  5444 ;
  5570 ;
  5445 
  5571 
  5453 	 yynerrs++;
  5579 	 yynerrs++;
  5454 	 print_err_msg(current_filename, locf(@1), locl(@2), "no step name defined in initial step declaration.");
  5580 	 print_err_msg(current_filename, locf(@1), locl(@2), "no step name defined in initial step declaration.");
  5455 	}
  5581 	}
  5456 | INITIAL_STEP error ':' action_association_list END_STEP
  5582 | INITIAL_STEP error ':' action_association_list END_STEP
  5457 	{$$ = NULL;
  5583 	{$$ = NULL;
  5458 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid step name defined in initial step declaration.");
  5584 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid step name defined in initial step declaration.");
  5459 	 yyerrok;
  5585 	 yyerrok;
  5460 	}
  5586 	}
  5461 | INITIAL_STEP step_name action_association_list END_STEP
  5587 | INITIAL_STEP step_name action_association_list END_STEP
  5462 	{$$ = NULL;
  5588 	{$$ = NULL;
  5463 	 yynerrs++;
  5589 	 yynerrs++;
  5464 	 print_err_msg(current_filename, locf(@2), locl(@3), "':' missing after step name in initial step declaration.");
  5590 	 print_err_msg(current_filename, locl(@2), locf(@3), "':' missing after step name in initial step declaration.");
  5465 	}
  5591 	}
  5466 | INITIAL_STEP step_name error action_association_list END_STEP
  5592 | INITIAL_STEP step_name error action_association_list END_STEP
  5467 	{$$ = NULL;
  5593 	{$$ = NULL;
  5468 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting ':' after step name in initial step declaration.");
  5594 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ':' after step name in initial step declaration.");
  5469 	 yyerrok;
  5595 	 yyerrok;
  5470 	}
  5596 	}
  5471 | INITIAL_STEP step_name ':' error END_STEP
  5597 | INITIAL_STEP step_name ':' error END_STEP
  5472 	{$$ = NULL;
  5598 	{$$ = NULL;
  5473 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid action association list in initial step declaration.");
  5599 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid action association list in initial step declaration.");
  5474 	 yyerrok;
  5600 	 yyerrok;
  5475 	}
  5601 	}
  5476 | INITIAL_STEP error END_STEP
  5602 | INITIAL_STEP error END_STEP
  5477 	{$$ = NULL;
  5603 	{$$ = NULL;
  5478 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in initial step declaration.");
  5604 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in initial step declaration.");
  5479 	 yyerrok;
  5605 	 yyerrok;
  5480 	}
  5606 	}
  5481 /* ERROR_CHECK_END */
  5607 /* ERROR_CHECK_END */
  5482 ;
  5608 ;
  5483 
  5609 
  5487 	{$$ = new step_c($2, $4, locloc(@$));}
  5613 	{$$ = new step_c($2, $4, locloc(@$));}
  5488 /* ERROR_CHECK_BEGIN */
  5614 /* ERROR_CHECK_BEGIN */
  5489 | STEP ':' action_association_list END_STEP
  5615 | STEP ':' action_association_list END_STEP
  5490   {$$ = NULL;
  5616   {$$ = NULL;
  5491 	 yynerrs++;
  5617 	 yynerrs++;
  5492 	 print_err_msg(current_filename, locf(@1), locl(@2), "no step name defined in step declaration.");
  5618 	 print_err_msg(current_filename, locl(@1), locf(@2), "no step name defined in step declaration.");
  5493 	}
  5619 	}
  5494 | STEP error ':' action_association_list END_STEP
  5620 | STEP error ':' action_association_list END_STEP
  5495 	{$$ = NULL;
  5621 	{$$ = NULL;
  5496 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid step name defined in step declaration.");
  5622 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid step name defined in step declaration.");
  5497 	 yyerrok;
  5623 	 yyerrok;
  5498 	}
  5624 	}
  5499 | STEP step_name action_association_list END_STEP
  5625 | STEP step_name action_association_list END_STEP
  5500 	{$$ = NULL;
  5626 	{$$ = NULL;
  5501 	 yynerrs++;
  5627 	 yynerrs++;
  5502 	 print_err_msg(current_filename, locf(@2), locl(@3), "':' missing after step name in step declaration.");
  5628 	 print_err_msg(current_filename, locl(@2), locf(@3), "':' missing after step name in step declaration.");
  5503 	}
  5629 	}
  5504 | STEP step_name error action_association_list END_STEP
  5630 | STEP step_name error action_association_list END_STEP
  5505 	{$$ = NULL;
  5631 	{$$ = NULL;
  5506 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting ':' after step name in step declaration.");
  5632 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ':' after step name in step declaration.");
  5507 	 yyerrok;
  5633 	 yyerrok;
  5508 	}
  5634 	}
  5509 | STEP step_name ':' error END_STEP
  5635 | STEP step_name ':' error END_STEP
  5510 	{$$ = NULL;
  5636 	{$$ = NULL;
  5511 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid action association list in step declaration.");
  5637 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid action association list in step declaration.");
  5512 	 yyerrok;
  5638 	 yyerrok;
  5513 	}
  5639 	}
  5514 | STEP error END_STEP
  5640 | STEP error END_STEP
  5515 	{$$ = NULL;
  5641 	{$$ = NULL;
  5516 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in step declaration.");
  5642 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in step declaration.");
  5517 	 yyerrok;
  5643 	 yyerrok;
  5518 	}
  5644 	}
  5519 /* ERROR_CHECK_END */
  5645 /* ERROR_CHECK_END */
  5520 ;
  5646 ;
  5521 
  5647 
  5528 	{$$ = new action_association_list_c(locloc(@$));}
  5654 	{$$ = new action_association_list_c(locloc(@$));}
  5529 | action_association_list action_association ';'
  5655 | action_association_list action_association ';'
  5530 	{$$ = $1; $$->add_element($2);}
  5656 	{$$ = $1; $$->add_element($2);}
  5531 /* ERROR_CHECK_BEGIN */
  5657 /* ERROR_CHECK_BEGIN */
  5532 | action_association_list action_association error
  5658 | action_association_list action_association error
  5533 	{$$ = NULL;
  5659 	{$$ = $1;
  5534 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at end of action association declaration.");
  5660 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at end of action association declaration.");
  5535 	 yyerrok;
  5661 	 yyerrok;
  5536 	}
  5662 	}
  5537 | action_association_list ';'
  5663 | action_association_list ';'
  5538 	{$$ = NULL;
  5664 	{$$ = $1;
  5539 	 yynerrs++;
  5665 	 yynerrs++;
  5540 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after action association declaration.");
  5666 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after action association declaration.");
  5541 	}
  5667 	}
  5542 /* ERROR_CHECK_END */
  5668 /* ERROR_CHECK_END */
  5543 ;
  5669 ;
  5550   action_name '(' {cmd_goto_sfc_qualifier_state()} action_qualifier {cmd_pop_state()} indicator_name_list ')'
  5676   action_name '(' {cmd_goto_sfc_qualifier_state()} action_qualifier {cmd_pop_state()} indicator_name_list ')'
  5551 	{$$ = new action_association_c($1, $4, $6, locloc(@$));}
  5677 	{$$ = new action_association_c($1, $4, $6, locloc(@$));}
  5552 /* ERROR_CHECK_BEGIN */
  5678 /* ERROR_CHECK_BEGIN */
  5553 /*| action_name '(' error indicator_name_list ')'
  5679 /*| action_name '(' error indicator_name_list ')'
  5554   {$$ = NULL;
  5680   {$$ = NULL;
  5555 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid qualifier defined in action association.");
  5681 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid qualifier defined in action association.");
  5556 	 yyerrok;
  5682 	 yyerrok;
  5557 	}*/
  5683 	}*/
  5558 /* ERROR_CHECK_END */
  5684 /* ERROR_CHECK_END */
  5559 ;
  5685 ;
  5560 
  5686 
  5564 	{$$ = new indicator_name_list_c(locloc(@$));}
  5690 	{$$ = new indicator_name_list_c(locloc(@$));}
  5565 | indicator_name_list ',' indicator_name
  5691 | indicator_name_list ',' indicator_name
  5566 	{$$ = $1; $$->add_element($3);}
  5692 	{$$ = $1; $$->add_element($3);}
  5567 /* ERROR_CHECK_BEGIN */
  5693 /* ERROR_CHECK_BEGIN */
  5568 | indicator_name_list indicator_name
  5694 | indicator_name_list indicator_name
  5569 	{$$ = NULL;
  5695 	{$$ = $1;
  5570 	 yynerrs++;
  5696 	 yynerrs++;
  5571 	 print_err_msg(current_filename, locf(@1), locl(@1), "',' missing at end of action association declaration.");
  5697 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing at end of action association declaration.");
  5572 	}
  5698 	}
  5573 | indicator_name_list ',' error
  5699 | indicator_name_list ',' error
  5574 	{$$ = NULL;
  5700 	{$$ = $1;
  5575 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after ',' in indicator list.");
  5701 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after ',' in indicator list.");
  5576 	 yyerrok;
  5702 	 yyerrok;
  5577 	}
  5703 	}
  5578 /* ERROR_CHECK_END */
  5704 /* ERROR_CHECK_END */
  5579 ;
  5705 ;
  5590 	{$$ = new action_qualifier_c($1, $3, locloc(@$));}
  5716 	{$$ = new action_qualifier_c($1, $3, locloc(@$));}
  5591 /* ERROR_CHECK_BEGIN */
  5717 /* ERROR_CHECK_BEGIN */
  5592 | timed_qualifier action_time
  5718 | timed_qualifier action_time
  5593 	{$$ = NULL;
  5719 	{$$ = NULL;
  5594 	 yynerrs++;
  5720 	 yynerrs++;
  5595 	 print_err_msg(current_filename, locf(@1), locl(@1), "',' missing between timed qualifier and action time in action qualifier.");
  5721 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing between timed qualifier and action time in action qualifier.");
  5596 	}
  5722 	}
  5597 | timed_qualifier ',' error
  5723 | timed_qualifier ',' error
  5598 	{$$ = NULL;
  5724 	{$$ = NULL;
  5599 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after ',' in action qualifier.");
  5725 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after ',' in action qualifier.");
  5600 	 yyerrok;
  5726 	 yyerrok;
  5634 | '(' step_name_list ')'
  5760 | '(' step_name_list ')'
  5635 	{$$ = new steps_c(NULL, $2, locloc(@$));}
  5761 	{$$ = new steps_c(NULL, $2, locloc(@$));}
  5636 /* ERROR_CHECK_BEGIN */
  5762 /* ERROR_CHECK_BEGIN */
  5637 | '(' step_name_list error
  5763 | '(' step_name_list error
  5638 	{$$ = NULL;
  5764 	{$$ = NULL;
  5639 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ')' at the end of step list in transition declaration.");
  5765 	 print_err_msg(current_filename, locl(@2), locf(@3), "expecting ')' at the end of step list in transition declaration.");
  5640 	 yyerrok;
  5766 	 yyerrok;
  5641 	}
  5767 	}
  5642 | '(' error ')'
  5768 | '(' error ')'
  5643 	{$$ = NULL;
  5769 	{$$ = NULL;
  5644 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid step list in transition declaration.");
  5770 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid step list in transition declaration.");
  5645 	 yyerrok;
  5771 	 yyerrok;
  5646 	}
  5772 	}
  5647 /* ERROR_CHECK_END */
  5773 /* ERROR_CHECK_END */
  5648 ;
  5774 ;
  5649 
  5775 
  5652 	{$$ = new step_name_list_c(locloc(@$)); $$->add_element($1); $$->add_element($3);}
  5778 	{$$ = new step_name_list_c(locloc(@$)); $$->add_element($1); $$->add_element($3);}
  5653 | step_name_list ',' step_name
  5779 | step_name_list ',' step_name
  5654 	{$$ = $1; $$->add_element($3);}
  5780 	{$$ = $1; $$->add_element($3);}
  5655 /* ERROR_CHECK_BEGIN */
  5781 /* ERROR_CHECK_BEGIN */
  5656 | step_name_list step_name
  5782 | step_name_list step_name
  5657 	{$$ = NULL;
  5783 	{$$ = $1;
  5658 	 yynerrs++;
  5784 	 yynerrs++;
  5659 	 print_err_msg(current_filename, locf(@1), locl(@2), "',' missing in step list.");
  5785 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in step list.");
  5660 	}
  5786 	}
  5661 | step_name_list ',' error
  5787 | step_name_list ',' error
  5662 	{$$ = NULL;
  5788 	{$$ = $1;
  5663 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid step name in step list.");
  5789 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ',' in step list.");
  5664 	 yyerrok;
  5790 	 yyerrok;
  5665 	}
  5791 	}
  5666 /* ERROR_CHECK_END */
  5792 /* ERROR_CHECK_END */
  5667 ;
  5793 ;
  5668 
  5794 
  5684   END_TRANSITION 
  5810   END_TRANSITION 
  5685 	{$$ = new transition_c($2, $3, $5, $7, $9, locloc(@$));}
  5811 	{$$ = new transition_c($2, $3, $5, $7, $9, locloc(@$));}
  5686 /* ERROR_CHECK_BEGIN */
  5812 /* ERROR_CHECK_BEGIN */
  5687 | TRANSITION error transition_priority FROM steps TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5813 | TRANSITION error transition_priority FROM steps TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5688 	{$$ = NULL;
  5814 	{$$ = NULL;
  5689 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid transition name defined in transition declaration.");
  5815 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid transition name defined in transition declaration.");
  5690 	 yyerrok;
  5816 	 yyerrok;
  5691 	} 
  5817 	} 
  5692 | TRANSITION transition_name error FROM steps TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5818 | TRANSITION transition_name error FROM steps TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5693 	{$$ = NULL;
  5819 	{$$ = NULL;
  5694 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid transition priority defined in transition declaration.");
  5820 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid transition priority defined in transition declaration.");
  5695 	 yyerrok;
  5821 	 yyerrok;
  5696 	}
  5822 	}
  5697 | TRANSITION transition_priority FROM TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5823 | TRANSITION transition_priority FROM TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5698 	{$$ = NULL;
  5824 	{$$ = NULL;
  5699 	 yynerrs++;
  5825 	 yynerrs++;
  5700 	 print_err_msg(current_filename, locf(@3), locl(@4), "no origin step(s) defined in transition declaration.");
  5826 	 print_err_msg(current_filename, locl(@3), locf(@4), "no origin step(s) defined in transition declaration.");
  5701 	}
  5827 	}
  5702 | TRANSITION transition_name transition_priority FROM TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5828 | TRANSITION transition_name transition_priority FROM TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5703 	{$$ = NULL;
  5829 	{$$ = NULL;
  5704 	 yynerrs++;
  5830 	 yynerrs++;
  5705 	 print_err_msg(current_filename, locf(@4), locl(@5), "no origin step(s) defined in transition declaration.");
  5831 	 print_err_msg(current_filename, locl(@4), locf(@5), "no origin step(s) defined in transition declaration.");
  5706 	}
  5832 	}
  5707 | TRANSITION transition_priority FROM error TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5833 | TRANSITION transition_priority FROM error TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5708 	{$$ = NULL;
  5834 	{$$ = NULL;
  5709 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid origin step(s) defined in transition declaration.");
  5835 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid origin step(s) defined in transition declaration.");
  5710 	 yyerrok;
  5836 	 yyerrok;
  5711 	}
  5837 	}
  5712 | TRANSITION transition_name transition_priority FROM error TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5838 | TRANSITION transition_name transition_priority FROM error TO steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5713 	{$$ = NULL;
  5839 	{$$ = NULL;
  5714 	 print_err_msg(current_filename, locf(@4), locl(@6), "invalid origin step(s) defined in transition declaration.");
  5840 	 print_err_msg(current_filename, locf(@5), locl(@5), "invalid origin step(s) defined in transition declaration.");
  5715 	 yyerrok;
  5841 	 yyerrok;
  5716 	}
  5842 	}
  5717 | TRANSITION transition_priority FROM steps steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5843 | TRANSITION transition_priority FROM steps steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5718 	{$$ = NULL;
  5844 	{$$ = NULL;
  5719 	 yynerrs++;
  5845 	 yynerrs++;
  5720 	 print_err_msg(current_filename, locf(@4), locl(@5), "'TO' missing between origin step(s) and destination step(s) in transition declaration.");
  5846 	 print_err_msg(current_filename, locl(@4), locf(@5), "'TO' missing between origin step(s) and destination step(s) in transition declaration.");
  5721 	}
  5847 	}
  5722 | TRANSITION transition_name transition_priority FROM steps steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5848 | TRANSITION transition_name transition_priority FROM steps steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5723 	{$$ = NULL;
  5849 	{$$ = NULL;
  5724 	 yynerrs++;
  5850 	 yynerrs++;
  5725 	 print_err_msg(current_filename, locf(@5), locl(@6), "'TO' missing between origin step(s) and destination step(s) in transition declaration.");
  5851 	 print_err_msg(current_filename, locl(@5), locf(@6), "'TO' missing between origin step(s) and destination step(s) in transition declaration.");
  5726 	}
  5852 	}
  5727 | TRANSITION transition_priority FROM steps error steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5853 | TRANSITION transition_priority FROM steps error steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5728 	{$$ = NULL;
  5854 	{$$ = NULL;
  5729 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting 'TO' between origin step(s) and destination step(s) in transition declaration.");
  5855 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting 'TO' between origin step(s) and destination step(s) in transition declaration.");
  5730 	 yyerrok;
  5856 	 yyerrok;
  5731 	}
  5857 	}
  5732 | TRANSITION transition_name transition_priority FROM steps error steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5858 | TRANSITION transition_name transition_priority FROM steps error steps {cmd_goto_body_state();} transition_condition END_TRANSITION
  5733 	{$$ = NULL;
  5859 	{$$ = NULL;
  5734 	 print_err_msg(current_filename, locf(@5), locl(@7), "expecting 'TO' between origin step(s) and destination step(s) in transition declaration.");
  5860 	 print_err_msg(current_filename, locf(@6), locl(@6), "expecting 'TO' between origin step(s) and destination step(s) in transition declaration.");
  5735 	 yyerrok;
  5861 	 yyerrok;
  5736 	}
  5862 	}
  5737 | TRANSITION transition_priority FROM steps TO {cmd_goto_body_state();} transition_condition END_TRANSITION
  5863 | TRANSITION transition_priority FROM steps TO {cmd_goto_body_state();} transition_condition END_TRANSITION
  5738 	{$$ = NULL;
  5864 	{$$ = NULL;
  5739 	 yynerrs++;
  5865 	 yynerrs++;
  5740 	 print_err_msg(current_filename, locf(@5), locl(@7), "no destination step(s) defined in transition declaration.");
  5866 	 print_err_msg(current_filename, locl(@5), locf(@7), "no destination step(s) defined in transition declaration.");
  5741 	}
  5867 	}
  5742 | TRANSITION transition_name transition_priority FROM steps TO {cmd_goto_body_state();} transition_condition END_TRANSITION
  5868 | TRANSITION transition_name transition_priority FROM steps TO {cmd_goto_body_state();} transition_condition END_TRANSITION
  5743 	{$$ = NULL;
  5869 	{$$ = NULL;
  5744 	 yynerrs++;
  5870 	 yynerrs++;
  5745 	 print_err_msg(current_filename, locf(@6), locl(@8), "no destination step(s) defined in transition declaration.");
  5871 	 print_err_msg(current_filename, locl(@6), locf(@8), "no destination step(s) defined in transition declaration.");
  5746 	}
  5872 	}
  5747 | TRANSITION transition_priority FROM steps TO error {cmd_goto_body_state();} transition_condition END_TRANSITION
  5873 | TRANSITION transition_priority FROM steps TO error {cmd_goto_body_state();} transition_condition END_TRANSITION
  5748 	{$$ = NULL;
  5874 	{$$ = NULL;
  5749 	 print_err_msg(current_filename, locf(@5), locl(@8), "invalid destination step(s) defined in transition declaration.");
  5875 	 print_err_msg(current_filename, locf(@6), locl(@6), "invalid destination step(s) defined in transition declaration.");
  5750 	 yyerrok;
  5876 	 yyerrok;
  5751 	}
  5877 	}
  5752 | TRANSITION transition_name transition_priority FROM steps TO error {cmd_goto_body_state();} transition_condition END_TRANSITION
  5878 | TRANSITION transition_name transition_priority FROM steps TO error {cmd_goto_body_state();} transition_condition END_TRANSITION
  5753 	{$$ = NULL;
  5879 	{$$ = NULL;
  5754 	 print_err_msg(current_filename, locf(@6), locl(@9), "invalid destination step(s) defined in transition declaration.");
  5880 	 print_err_msg(current_filename, locf(@7), locl(@7), "invalid destination step(s) defined in transition declaration.");
  5755 	 yyerrok;
  5881 	 yyerrok;
  5756 	}
  5882 	}
  5757 | TRANSITION transition_priority {cmd_goto_body_state();} transition_condition END_TRANSITION
  5883 | TRANSITION transition_priority {cmd_goto_body_state();} transition_condition END_TRANSITION
  5758 	{$$ = NULL;
  5884 	{$$ = NULL;
  5759 	 yynerrs++;
  5885 	 yynerrs++;
  5760 	 print_err_msg(current_filename, locf(@2), locl(@4), "no origin and destination step(s) defined in transition declaration.");
  5886 	 print_err_msg(current_filename, locl(@2), locf(@4), "no origin and destination step(s) defined in transition declaration.");
  5761 	}
  5887 	}
  5762 | TRANSITION transition_name transition_priority {cmd_goto_body_state();} transition_condition END_TRANSITION
  5888 | TRANSITION transition_name transition_priority {cmd_goto_body_state();} transition_condition END_TRANSITION
  5763 	{$$ = NULL;
  5889 	{$$ = NULL;
  5764 	 yynerrs++;
  5890 	 yynerrs++;
  5765 	 print_err_msg(current_filename, locf(@3), locl(@5), "no origin and destination step(s) defined in transition declaration.");
  5891 	 print_err_msg(current_filename, locl(@3), locf(@5), "no origin and destination step(s) defined in transition declaration.");
  5766 	}
  5892 	}
  5767 | TRANSITION error END_TRANSITION
  5893 | TRANSITION error END_TRANSITION
  5768 	{$$ = NULL;
  5894 	{$$ = NULL;
  5769 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in transition declaration.");
  5895 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in transition declaration.");
  5770 	 yyerrok;
  5896 	 yyerrok;
  5771 	}
  5897 	}
  5772 /* ERROR_CHECK_END */
  5898 /* ERROR_CHECK_END */
  5773 ;
  5899 ;
  5774 
  5900 
  5775 transition_priority:
  5901 transition_priority:
  5776   /* empty */
  5902   /* empty */
  5777   {$$ = NULL;}
  5903   {$$ = NULL;}
  5778 | '(' {cmd_goto_sfc_priority_state();} PRIORITY {cmd_pop_state();} ASSIGN integer ')'
  5904 | '(' {cmd_goto_sfc_priority_state();} PRIORITY {cmd_pop_state();} ASSIGN integer ')'
  5779 	{$$ = $6;}
  5905 	{$$ = $6;}
       
  5906 /* ERROR_CHECK_BEGIN */
       
  5907 | '(' ASSIGN integer ')'
       
  5908 	{$$ = NULL;
       
  5909 	 yynerrs++;
       
  5910 	 print_err_msg(current_filename, locl(@1), locf(@2), "'PRIORITY' missing between '(' and ':=' in transition declaration with priority.");
       
  5911 	}
       
  5912 | '(' error ASSIGN integer ')'
       
  5913 	{$$ = NULL;
       
  5914 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting 'PRIORITY' between '(' and ':=' in transition declaration with priority.");
       
  5915 	 yyerrok;
       
  5916 	}
       
  5917 //* ERROR_CHECK_END */
  5780 ;
  5918 ;
  5781 
  5919 
  5782 
  5920 
  5783 transition_condition:
  5921 transition_condition:
  5784   ':' eol_list simple_instr_list
  5922   ':' eol_list simple_instr_list
  5787 	{$$ = new transition_condition_c(NULL, $2, locloc(@$));}
  5925 	{$$ = new transition_condition_c(NULL, $2, locloc(@$));}
  5788 /* ERROR_CHECK_BEGIN */
  5926 /* ERROR_CHECK_BEGIN */
  5789 | eol_list simple_instr_list
  5927 | eol_list simple_instr_list
  5790 	{$$ = NULL;
  5928 	{$$ = NULL;
  5791 	 yynerrs++;
  5929 	 yynerrs++;
  5792 	 print_err_msg(current_filename, locf(@1), locl(@1), "':' missing before IL condition in transition declaration.");
  5930 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing before IL condition in transition declaration.");
  5793 	}
  5931 	}
  5794 | ':' eol_list error
  5932 | ':' eol_list error
  5795 	{$$ = NULL;
  5933 	{$$ = NULL;
  5796 	 print_err_msg(current_filename, locf(@2), locl(@2), "no instructions defined in IL condition of transition declaration.");
  5934 	 print_err_msg(current_filename, locl(@2), locf(@3), "no instructions defined in IL condition of transition declaration.");
  5797 	 yyerrok;
  5935 	 yyerrok;
  5798 	}
  5936 	}
  5799 | ASSIGN ';'
  5937 | ASSIGN ';'
  5800 	{$$ = NULL;
  5938 	{$$ = NULL;
  5801 	 print_err_msg(current_filename, locf(@2), locl(@2), "no expression defined in ST condition of transition declaration.");
  5939 	 yynerrs++;
  5802 	 yyerrok;
  5940 	 print_err_msg(current_filename, locl(@1), locf(@2), "no expression defined in ST condition of transition declaration.");
  5803 	}
  5941 	}
  5804 | ASSIGN error ';'
  5942 | ASSIGN error ';'
  5805 	{$$ = NULL;
  5943 	{$$ = NULL;
  5806 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression defined in ST condition of transition declaration.");
  5944 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression defined in ST condition of transition declaration.");
  5807 	 yyerrok;
  5945 	 yyerrok;
  5808 	}
  5946 	}
  5809 | ASSIGN expression error
  5947 | ASSIGN expression error
  5810 	{$$ = NULL;
  5948 	{$$ = NULL;
  5811 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ';' after expression defined in ST condition of transition declaration.");
  5949 	 print_err_msg(current_filename, locl(@2), locf(@3), "expecting ';' after expression defined in ST condition of transition declaration.");
  5812 	 yyerrok;
  5950 	 yyerrok;
  5813 	}
  5951 	}
  5814 /* ERROR_CHECK_END */
  5952 /* ERROR_CHECK_END */
  5815 ;
  5953 ;
  5816 
  5954 
  5822 	{$$ = new action_c($2, $5, locloc(@$));}
  5960 	{$$ = new action_c($2, $5, locloc(@$));}
  5823 /* ERROR_CHECK_BEGIN */
  5961 /* ERROR_CHECK_BEGIN */
  5824 | ACTION ':' {cmd_goto_body_state();} function_block_body END_ACTION
  5962 | ACTION ':' {cmd_goto_body_state();} function_block_body END_ACTION
  5825   {$$ = NULL;
  5963   {$$ = NULL;
  5826 	 yynerrs++;
  5964 	 yynerrs++;
  5827 	 print_err_msg(current_filename, locf(@1), locl(@2), "no action name defined in action declaration.");
  5965 	 print_err_msg(current_filename, locl(@1), locf(@2), "no action name defined in action declaration.");
  5828 	}
  5966 	}
  5829 | ACTION error ':' {cmd_goto_body_state();} function_block_body END_ACTION
  5967 | ACTION error ':' {cmd_goto_body_state();} function_block_body END_ACTION
  5830 	{$$ = NULL;
  5968 	{$$ = NULL;
  5831 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid action name defined in action declaration.");
  5969 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid action name defined in action declaration.");
  5832 	 yyerrok;
  5970 	 yyerrok;
  5833 	}
  5971 	}
  5834 | ACTION action_name {cmd_goto_body_state();} function_block_body END_ACTION
  5972 | ACTION action_name {cmd_goto_body_state();} function_block_body END_ACTION
  5835 	{$$ = NULL;
  5973 	{$$ = NULL;
  5836 	 yynerrs++;
  5974 	 yynerrs++;
  5837 	 print_err_msg(current_filename, locf(@2), locl(@4), "':' missing after action name in action declaration.");
  5975 	 print_err_msg(current_filename, locl(@2), locf(@4), "':' missing after action name in action declaration.");
  5838 	}
  5976 	}
  5839 | ACTION action_name ':' END_ACTION
  5977 | ACTION action_name ':' END_ACTION
  5840 	{$$ = NULL;
  5978 	{$$ = NULL;
  5841 	 print_err_msg(current_filename, locf(@3), locl(@4), "no body defined in action declaration.");
  5979 	 yynerrs++;
  5842 	 yyerrok;
  5980 	 print_err_msg(current_filename, locl(@3), locf(@4), "no body defined in action declaration.");
  5843 	}
  5981 	}
  5844 | ACTION error END_ACTION
  5982 | ACTION error END_ACTION
  5845 	{$$ = NULL;
  5983 	{$$ = NULL;
  5846 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in action declaration.");
  5984 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in action declaration.");
  5847 	 yyerrok;
  5985 	 yyerrok;
  5848 	}
  5986 	}
  5849 /* ERROR_CHECK_END */
  5987 /* ERROR_CHECK_END */
  5850 ;
  5988 ;
  5851 
  5989 
  5944    optional_access_declarations
  6082    optional_access_declarations
  5945    optional_instance_specific_initializations
  6083    optional_instance_specific_initializations
  5946   END_CONFIGURATION
  6084   END_CONFIGURATION
  5947   {$$ = NULL;
  6085   {$$ = NULL;
  5948 	 yynerrs++;
  6086 	 yynerrs++;
  5949 	 print_err_msg(current_filename, locf(@1), locl(@2), "no configuration name defined in configuration declaration.");
  6087 	 print_err_msg(current_filename, locl(@1), locf(@2), "no configuration name defined in configuration declaration.");
  5950 	}
  6088 	}
  5951 | CONFIGURATION
  6089 | CONFIGURATION
  5952    optional_global_var_declarations
  6090    optional_global_var_declarations
  5953    resource_declaration_list
  6091    resource_declaration_list
  5954    optional_access_declarations
  6092    optional_access_declarations
  5955    optional_instance_specific_initializations
  6093    optional_instance_specific_initializations
  5956   END_CONFIGURATION
  6094   END_CONFIGURATION
  5957   {$$ = NULL;
  6095   {$$ = NULL;
  5958 	 yynerrs++;
  6096 	 yynerrs++;
  5959 	 print_err_msg(current_filename, locf(@1), locl(@2), "no configuration name defined in configuration declaration.");
  6097 	 print_err_msg(current_filename, locl(@1), locf(@2), "no configuration name defined in configuration declaration.");
  5960 	}
  6098 	}
  5961 | CONFIGURATION error
  6099 | CONFIGURATION error
  5962    optional_global_var_declarations
  6100    optional_global_var_declarations
  5963    single_resource_declaration
  6101    single_resource_declaration
  5964    {variable_name_symtable.pop();}
  6102    {variable_name_symtable.pop();}
  5965    optional_access_declarations
  6103    optional_access_declarations
  5966    optional_instance_specific_initializations
  6104    optional_instance_specific_initializations
  5967   END_CONFIGURATION
  6105   END_CONFIGURATION
  5968   {$$ = NULL;
  6106   {$$ = NULL;
  5969 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid configuration name defined in configuration declaration.");
  6107 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid configuration name defined in configuration declaration.");
  5970 	 yyerrok;
  6108 	 yyerrok;
  5971 	}
  6109 	}
  5972 | CONFIGURATION error
  6110 | CONFIGURATION error
  5973    optional_global_var_declarations
  6111    optional_global_var_declarations
  5974    resource_declaration_list
  6112    resource_declaration_list
  5975    optional_access_declarations
  6113    optional_access_declarations
  5976    optional_instance_specific_initializations
  6114    optional_instance_specific_initializations
  5977   END_CONFIGURATION
  6115   END_CONFIGURATION
  5978   {$$ = NULL;
  6116   {$$ = NULL;
  5979 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid configuration name defined in configuration declaration.");
  6117 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid configuration name defined in configuration declaration.");
  5980 	 yyerrok;
  6118 	 yyerrok;
  5981 	}
  6119 	}
  5982 | CONFIGURATION configuration_name
  6120 | CONFIGURATION configuration_name
  5983    optional_global_var_declarations
  6121    optional_global_var_declarations
  5984    optional_access_declarations
  6122    optional_access_declarations
  5985    optional_instance_specific_initializations
  6123    optional_instance_specific_initializations
  5986   END_CONFIGURATION
  6124   END_CONFIGURATION
  5987   {$$ = NULL;
  6125   {$$ = NULL;
  5988 	 print_err_msg(current_filename, locf(@1), locl(@2), "no resource(s) defined in configuration declaration.");
  6126 	 yynerrs++;
  5989 	 yyerrok;
  6127 	 print_err_msg(current_filename, locl(@3), locf(@4), "no resource(s) defined in configuration declaration.");
  5990 	}
  6128 	}
  5991 | CONFIGURATION configuration_name
  6129 | CONFIGURATION configuration_name
  5992    optional_global_var_declarations
  6130    optional_global_var_declarations
  5993    error
  6131    error
  5994    optional_access_declarations
  6132    optional_access_declarations
  5995    optional_instance_specific_initializations
  6133    optional_instance_specific_initializations
  5996   END_CONFIGURATION
  6134   END_CONFIGURATION
  5997   {$$ = NULL;
  6135   {$$ = NULL;
  5998 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid resource(s) defined in configuration declaration.");
  6136 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid resource(s) defined in configuration declaration.");
  5999 	 yyerrok;
  6137 	 yyerrok;
  6000 	}
  6138 	}
  6001 | CONFIGURATION error END_CONFIGURATION
  6139 | CONFIGURATION error END_CONFIGURATION
  6002 	{$$ = NULL;
  6140 	{$$ = NULL;
  6003 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in configuration declaration.");
  6141 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in configuration declaration.");
  6004 	 yyerrok;
  6142 	 yyerrok;
  6005 	}
  6143 	}
  6006 /* ERROR_CHECK_END */
  6144 /* ERROR_CHECK_END */
  6007 ;
  6145 ;
  6008 
  6146 
  6037 	{$$ = new resource_declaration_list_c(locloc(@$)); $$->add_element($1);}
  6175 	{$$ = new resource_declaration_list_c(locloc(@$)); $$->add_element($1);}
  6038 | resource_declaration_list resource_declaration
  6176 | resource_declaration_list resource_declaration
  6039 	{$$ = $1; $$->add_element($2);}
  6177 	{$$ = $1; $$->add_element($2);}
  6040 /* ERROR_CHECK_BEGIN */
  6178 /* ERROR_CHECK_BEGIN */
  6041 | resource_declaration_list error
  6179 | resource_declaration_list error
  6042 	{$$ = NULL;
  6180 	{$$ = $1;
  6043 	 print_err_msg(current_filename, locf(@1), locl(@1), "unexpected token after resource declaration.");
  6181 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after resource declaration.");
  6044 	 yyerrok;
  6182 	 yyerrok;
  6045 	}
  6183 	}
  6046 /* ERROR_CHECK_END */
  6184 /* ERROR_CHECK_END */
  6047 ;
  6185 ;
  6048 
  6186 
  6061    optional_global_var_declarations
  6199    optional_global_var_declarations
  6062    single_resource_declaration
  6200    single_resource_declaration
  6063   END_RESOURCE
  6201   END_RESOURCE
  6064   {$$ = NULL;
  6202   {$$ = NULL;
  6065 	 yynerrs++;
  6203 	 yynerrs++;
  6066 	 print_err_msg(current_filename, locf(@1), locl(@3), "no resource name defined in resource declaration.");
  6204 	 print_err_msg(current_filename, locl(@1), locf(@3), "no resource name defined in resource declaration.");
  6067 	}
  6205 	}
  6068 | RESOURCE error END_RESOURCE
  6206 | RESOURCE error END_RESOURCE
  6069 	{$$ = NULL;
  6207 	{$$ = NULL;
  6070 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in resource declaration.");
  6208 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in resource declaration.");
  6071 	 yyerrok;
  6209 	 yyerrok;
  6072 	}
  6210 	}
  6073 /* ERROR_CHECK_END */
  6211 /* ERROR_CHECK_END */
  6074 ;
  6212 ;
  6075 
  6213 
  6086 	{$$ = new task_configuration_list_c(locloc(@$));}
  6224 	{$$ = new task_configuration_list_c(locloc(@$));}
  6087 | task_configuration_list task_configuration ';'
  6225 | task_configuration_list task_configuration ';'
  6088 	{$$ = $1; $$->add_element($2);}
  6226 	{$$ = $1; $$->add_element($2);}
  6089 /* ERROR_CHECK_BEGIN */
  6227 /* ERROR_CHECK_BEGIN */
  6090 | task_configuration_list task_configuration error
  6228 | task_configuration_list task_configuration error
  6091   {$$ = NULL;
  6229   {$$ = $1;
  6092 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at the end of task configuration in resource declaration.");
  6230 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at the end of task configuration in resource declaration.");
  6093 	 yyerrok;
  6231 	 yyerrok;
  6094 	}
  6232 	}
  6095 | task_configuration_list ';'
  6233 | task_configuration_list ';'
  6096   {$$ = NULL;
  6234   {$$ = $1;
  6097 	 yynerrs++;
  6235 	 yynerrs++;
  6098 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after task configuration in resource declaration.");
  6236 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after task configuration in resource declaration.");
  6099 	}
  6237 	}
  6100 /* ERROR_CHECK_END */
  6238 /* ERROR_CHECK_END */
  6101 ;
  6239 ;
  6107 	{$$ = new program_configuration_list_c(locloc(@$)); $$->add_element($1);}
  6245 	{$$ = new program_configuration_list_c(locloc(@$)); $$->add_element($1);}
  6108 | program_configuration_list program_configuration ';'
  6246 | program_configuration_list program_configuration ';'
  6109 	{$$ = $1; $$->add_element($2);}
  6247 	{$$ = $1; $$->add_element($2);}
  6110 /* ERROR_CHECK_BEGIN */
  6248 /* ERROR_CHECK_BEGIN */
  6111 | program_configuration error
  6249 | program_configuration error
  6112   {$$ = NULL;
  6250   {$$ = new program_configuration_list_c(locloc(@$));
  6113 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at the end of program configuration in resource declaration.");
  6251 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at the end of program configuration in resource declaration.");
  6114 	 yyerrok;
  6252 	 yyerrok;
  6115 	}
  6253 	}
  6116 | program_configuration_list program_configuration error
  6254 | program_configuration_list program_configuration error
  6117   {$$ = NULL;
  6255   {$$ = $1;
  6118 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at the end of program configuration in resource declaration.");
  6256 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at the end of program configuration in resource declaration.");
  6119 	 yyerrok;
  6257 	 yyerrok;
  6120 	}
  6258 	}
  6121 | program_configuration_list error ';'
  6259 | program_configuration_list error ';'
  6122   {$$ = NULL;
  6260   {$$ = $1;
  6123 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid program configuration in resource declaration.");
  6261 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid program configuration in resource declaration.");
  6124 	 yyerrok;
  6262 	 yyerrok;
  6125 	}
  6263 	}
  6126 | program_configuration_list ';'
  6264 | program_configuration_list ';'
  6127   {$$ = NULL;
  6265   {$$ = $1;
  6128 	 yynerrs++;
  6266 	 yynerrs++;
  6129 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after program configuration in resource declaration.");
  6267 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after program configuration in resource declaration.");
  6130 	}
  6268 	}
  6131 /* ERROR_CHECK_END */
  6269 /* ERROR_CHECK_END */
  6132 ;
  6270 ;
  6140 	{$$ = NULL;}
  6278 	{$$ = NULL;}
  6141 // ERROR_CHECK_BEGIN //
  6279 // ERROR_CHECK_BEGIN //
  6142 | VAR_ACCESS END_VAR
  6280 | VAR_ACCESS END_VAR
  6143 	{$$ = NULL;
  6281 	{$$ = NULL;
  6144 	 yynerrs++;
  6282 	 yynerrs++;
  6145 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in access variable(s) declaration.");
  6283 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in access variable(s) declaration.");
  6146 	}
  6284 	}
  6147 | VAR_ACCESS error access_declaration_list END_VAR
  6285 | VAR_ACCESS error access_declaration_list END_VAR
  6148 	{$$ = NULL;
  6286 	{$$ = NULL;
  6149 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_ACCESS' in access variable(s) declaration.");
  6287 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_ACCESS' in access variable(s) declaration.");
  6150 	 yyerrok;
  6288 	 yyerrok;
  6151 	}
  6289 	}
  6152 | VAR_ACCESS error END_VAR
  6290 | VAR_ACCESS error END_VAR
  6153 	{$$ = NULL;
  6291 	{$$ = NULL;
  6154 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in access variable(s) declaration.");
  6292 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in access variable(s) declaration.");
  6155 	 yyerrok;
  6293 	 yyerrok;
  6156 	}
  6294 	}
  6157 // ERROR_CHECK_END //
  6295 // ERROR_CHECK_END //
  6158 ;
  6296 ;
  6159 
  6297 
  6160 // helper symbol for access_declarations //
  6298 // helper symbol for access_declarations //
  6161 access_declaration_list:
  6299 access_declaration_list:
  6162   access_declaration ';'
  6300   access_declaration ';'
  6163 | access_declaration_list access_declaration ';'
  6301 | access_declaration_list access_declaration ';'
  6164 // ERROR_CHECK_BEGIN //
  6302 // ERROR_CHECK_BEGIN //
       
  6303 | error ';'
       
  6304   {$$ = // create a new list //;
       
  6305 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid access variable declaration.");
       
  6306 	 yyerrok;
       
  6307 	}
  6165 | access_declaration error
  6308 | access_declaration error
  6166   {$$ = NULL;
  6309   {$$ = // create a new list //;
  6167 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at the end of access variable declaration.");
  6310 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at the end of access variable declaration.");
  6168 	 yyerrok;
  6311 	 yyerrok;
  6169 	}
  6312 	}
  6170 | access_declaration_list access_declaration error
  6313 | access_declaration_list access_declaration error
  6171   {$$ = NULL;
  6314   {$$ = $1;
  6172 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at the end of access variable declaration.");
  6315 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at the end of access variable declaration.");
  6173 	 yyerrok;
  6316 	 yyerrok;
  6174 	}
  6317 	}
  6175 | access_declaration_list error ';'
  6318 | access_declaration_list error ';'
  6176   {$$ = NULL;
  6319   {$$ = $1;
  6177 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid access variable declaration.");
  6320 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid access variable declaration.");
  6178 	 yyerrok;
  6321 	 yyerrok;
  6179 	}
  6322 	}
  6180 | access_declaration_list ';'
  6323 | access_declaration_list ';'
  6181   {$$ = NULL;
  6324   {$$ = $1;
  6182 	 yynerrs++;
  6325 	 yynerrs++;
  6183 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after access variable declaration.");
  6326 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after access variable declaration.");
  6184 	}
  6327 	}
  6185 // ERROR_CHECK_END //
  6328 // ERROR_CHECK_END //
  6186 ;
  6329 ;
  6276 	{$$ = new task_configuration_c($2, $3, locloc(@$));}
  6419 	{$$ = new task_configuration_c($2, $3, locloc(@$));}
  6277 /* ERROR_CHECK_BEGIN */
  6420 /* ERROR_CHECK_BEGIN */
  6278 | TASK task_initialization
  6421 | TASK task_initialization
  6279   {$$ = NULL;
  6422   {$$ = NULL;
  6280 	 yynerrs++;
  6423 	 yynerrs++;
  6281 	 print_err_msg(current_filename, locf(@1), locl(@2), "no task name defined in task declaration.");
  6424 	 print_err_msg(current_filename, locl(@1), locf(@2), "no task name defined in task declaration.");
  6282 	}
  6425 	}
  6283 | TASK error task_initialization
  6426 | TASK error task_initialization
  6284   {$$ = NULL;
  6427   {$$ = NULL;
  6285 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid task name defined in task declaration.");
  6428 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid task name defined in task declaration.");
  6286 	 yyerrok;
  6429 	 yyerrok;
  6287 	}
  6430 	}
  6288 | TASK task_name error
  6431 | TASK task_name error
  6289   {$$ = NULL;
  6432   {$$ = NULL;
  6290 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid task initialization in task declaration.");
  6433 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid task initialization in task declaration.");
  6291 	 yyerrok;
  6434 	 yyerrok;
  6292 	}
  6435 	}
  6293 /* ERROR_CHECK_END */
  6436 /* ERROR_CHECK_END */
  6294 ;
  6437 ;
  6295 
  6438 
  6318 	{$$ = $4;}
  6461 	{$$ = $4;}
  6319 /* ERROR_CHECK_BEGIN */
  6462 /* ERROR_CHECK_BEGIN */
  6320 | SINGLE {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6463 | SINGLE {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6321   {$$ = NULL;
  6464   {$$ = NULL;
  6322 	 yynerrs++;
  6465 	 yynerrs++;
  6323 	 print_err_msg(current_filename, locf(@1), locl(@3), "':=' missing after 'SINGLE' in task initialization.");
  6466 	 print_err_msg(current_filename, locl(@1), locf(@3), "':=' missing after 'SINGLE' in task initialization.");
  6324 	}
  6467 	}
  6325 | SINGLE error {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6468 | SINGLE error {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6326   {$$ = NULL;
  6469   {$$ = NULL;
  6327 	 print_err_msg(current_filename, locf(@1), locl(@4), "expecteing ':=' after 'SINGLE' in task initialization.");
  6470 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' after 'SINGLE' in task initialization.");
  6328 	 yyerrok;
  6471 	 yyerrok;
  6329 	}
  6472 	}
  6330 | SINGLE ASSIGN {cmd_pop_state();} ',' {cmd_goto_task_init_state();}
  6473 | SINGLE ASSIGN {cmd_pop_state();} ',' {cmd_goto_task_init_state();}
  6331   {$$ = NULL;
  6474   {$$ = NULL;
  6332 	 yynerrs++;
  6475 	 yynerrs++;
  6333 	 print_err_msg(current_filename, locf(@2), locl(@4), "no data source defined in 'SINGLE' statement of task initialization.");
  6476 	 print_err_msg(current_filename, locl(@2), locf(@4), "no data source defined in 'SINGLE' statement of task initialization.");
  6334 	}
  6477 	}
  6335 | SINGLE ASSIGN {cmd_pop_state();} error ',' {cmd_goto_task_init_state();}
  6478 | SINGLE ASSIGN {cmd_pop_state();} error ',' {cmd_goto_task_init_state();}
  6336   {$$ = NULL;
  6479   {$$ = NULL;
  6337 	 print_err_msg(current_filename, locf(@2), locl(@5), "invalid data source defined in 'SINGLE' statement of task initialization.");
  6480 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid data source defined in 'SINGLE' statement of task initialization.");
  6338 	 yyerrok;
  6481 	 yyerrok;
  6339 	}
  6482 	}
  6340 /* ERROR_CHECK_END */
  6483 /* ERROR_CHECK_END */
  6341 ;
  6484 ;
  6342 
  6485 
  6349 	{$$ = $4;}
  6492 	{$$ = $4;}
  6350 /* ERROR_CHECK_BEGIN */
  6493 /* ERROR_CHECK_BEGIN */
  6351 | INTERVAL {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6494 | INTERVAL {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6352   {$$ = NULL;
  6495   {$$ = NULL;
  6353 	 yynerrs++;
  6496 	 yynerrs++;
  6354 	 print_err_msg(current_filename, locf(@1), locl(@3), "':=' missing after 'INTERVAL' in task initialization.");
  6497 	 print_err_msg(current_filename, locl(@1), locf(@3), "':=' missing after 'INTERVAL' in task initialization.");
  6355 	}
  6498 	}
  6356 | INTERVAL error {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6499 | INTERVAL error {cmd_pop_state();} data_source ',' {cmd_goto_task_init_state();}
  6357   {$$ = NULL;
  6500   {$$ = NULL;
  6358 	 print_err_msg(current_filename, locf(@1), locl(@4), "expecting ':=' after 'INTERVAL' in task initialization.");
  6501 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' after 'INTERVAL' in task initialization.");
  6359 	 yyerrok;
  6502 	 yyerrok;
  6360 	}
  6503 	}
  6361 | INTERVAL ASSIGN {cmd_pop_state();} ',' {cmd_goto_task_init_state();}
  6504 | INTERVAL ASSIGN {cmd_pop_state();} ',' {cmd_goto_task_init_state();}
  6362   {$$ = NULL;
  6505   {$$ = NULL;
  6363 	 yynerrs++;
  6506 	 yynerrs++;
  6364 	 print_err_msg(current_filename, locf(@2), locl(@4), "no data source defined in 'INTERVAL' statement of task initialization.");
  6507 	 print_err_msg(current_filename, locl(@2), locf(@4), "no data source defined in 'INTERVAL' statement of task initialization.");
  6365 	}
  6508 	}
  6366 | INTERVAL ASSIGN {cmd_pop_state();} error ',' {cmd_goto_task_init_state();}
  6509 | INTERVAL ASSIGN {cmd_pop_state();} error ',' {cmd_goto_task_init_state();}
  6367   {$$ = NULL;
  6510   {$$ = NULL;
  6368 	 print_err_msg(current_filename, locf(@2), locl(@5), "invalid data source defined in 'INTERVAL' statement of task initialization.");
  6511 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid data source defined in 'INTERVAL' statement of task initialization.");
  6369 	 yyerrok;
  6512 	 yyerrok;
  6370 	}
  6513 	}
  6371 /* ERROR_CHECK_END */
  6514 /* ERROR_CHECK_END */
  6372 ;
  6515 ;
  6373 
  6516 
  6379 	{$$ = $4;}
  6522 	{$$ = $4;}
  6380 /* ERROR_CHECK_BEGIN */
  6523 /* ERROR_CHECK_BEGIN */
  6381 | PRIORITY {cmd_pop_state();} integer
  6524 | PRIORITY {cmd_pop_state();} integer
  6382   {$$ = NULL;
  6525   {$$ = NULL;
  6383 	 yynerrs++;
  6526 	 yynerrs++;
  6384 	 print_err_msg(current_filename, locf(@1), locl(@3), "':=' missing after 'PRIORITY' in task initialization.");
  6527 	 print_err_msg(current_filename, locl(@1), locf(@3), "':=' missing after 'PRIORITY' in task initialization.");
  6385 	}
  6528 	}
  6386 | PRIORITY error {cmd_pop_state();} integer 
  6529 | PRIORITY error {cmd_pop_state();} integer 
  6387   {$$ = NULL;
  6530   {$$ = NULL;
  6388 	 print_err_msg(current_filename, locf(@1), locl(@4), "expecting ':=' after 'PRIORITY' in task initialization.");
  6531 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' after 'PRIORITY' in task initialization.");
  6389 	 yyerrok;
  6532 	 yyerrok;
  6390 	}
  6533 	}
  6391 | PRIORITY ASSIGN {cmd_pop_state();} error
  6534 | PRIORITY ASSIGN {cmd_pop_state();} error
  6392   {$$ = NULL;
  6535   {$$ = NULL;
  6393 	 yynerrs++;
  6536 	 print_err_msg(current_filename, locl(@2), locf(@4), "no priority number defined in 'PRIORITY' statement of task initialization.");
  6394 	 print_err_msg(current_filename, locf(@2), locl(@2), "no priority number defined in 'PRIORITY' statement of task initialization.");
  6537 	 yyerrok;
  6395 	}
  6538 	}
  6396 /* ERROR_CHECK_END */
  6539 /* ERROR_CHECK_END */
  6397 ;
  6540 ;
  6398 
  6541 
  6399 
  6542 
  6421 	}
  6564 	}
  6422 /* ERROR_CHECK_BEGIN */
  6565 /* ERROR_CHECK_BEGIN */
  6423 | PROGRAM program_name optional_task_name ':' identifier optional_prog_conf_elements
  6566 | PROGRAM program_name optional_task_name ':' identifier optional_prog_conf_elements
  6424   {$$ = NULL;
  6567   {$$ = NULL;
  6425 	 yynerrs++;
  6568 	 yynerrs++;
  6426 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown program type name after ':' in program configuration.");
  6569 	 print_err_msg(current_filename, locf(@5), locl(@5), "unknown program type name after ':' in program configuration.");
  6427 	}
  6570 	}
  6428 | PROGRAM RETAIN program_name optional_task_name ':' identifier optional_prog_conf_elements
  6571 | PROGRAM RETAIN program_name optional_task_name ':' identifier optional_prog_conf_elements
  6429   {$$ = NULL;
  6572   {$$ = NULL;
  6430 	 yynerrs++;
  6573 	 yynerrs++;
  6431 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown program type name after ':' in program configuration.");
  6574 	 print_err_msg(current_filename, locf(@6), locl(@6), "unknown program type name after ':' in program configuration.");
  6432 	}
  6575 	}
  6433 | PROGRAM NON_RETAIN program_name optional_task_name ':' identifier optional_prog_conf_elements
  6576 | PROGRAM NON_RETAIN program_name optional_task_name ':' identifier optional_prog_conf_elements
  6434   {$$ = NULL;
  6577   {$$ = NULL;
  6435 	 yynerrs++;
  6578 	 yynerrs++;
  6436 	 print_err_msg(current_filename, locf(@2), locl(@4), "unknown program type name after ':' in program configuration.");
  6579 	 print_err_msg(current_filename, locf(@6), locl(@6), "unknown program type name after ':' in program configuration.");
  6437 	}
  6580 	}
  6438 | PROGRAM error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6581 | PROGRAM error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6439   {$$ = NULL;
  6582   {$$ = NULL;
  6440 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'PROGRAM' in program configuration.");
  6583 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'PROGRAM' in program configuration.");
  6441 	 yyerrok;
  6584 	 yyerrok;
  6442 	}
  6585 	}
  6443 | PROGRAM RETAIN error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6586 | PROGRAM RETAIN error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6444   {$$ = NULL;
  6587   {$$ = NULL;
  6445 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'RETAIN' in retentive program configuration.");
  6588 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'RETAIN' in retentive program configuration.");
  6446 	 yyerrok;
  6589 	 yyerrok;
  6447 	}
  6590 	}
  6448 | PROGRAM NON_RETAIN error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6591 | PROGRAM NON_RETAIN error program_name optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6449   {$$ = NULL;
  6592   {$$ = NULL;
  6450 	 print_err_msg(current_filename, locf(@2), locl(@4), "unexpected token after 'NON_RETAIN' in non-retentive program configuration.");
  6593 	 print_err_msg(current_filename, locf(@3), locl(@3), "unexpected token after 'NON_RETAIN' in non-retentive program configuration.");
  6451 	 yyerrok;
  6594 	 yyerrok;
  6452 	}
  6595 	}
  6453 | PROGRAM optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6596 | PROGRAM optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6454   {$$ = NULL;
  6597   {$$ = NULL;
  6455 	 yynerrs++;
  6598 	 yynerrs++;
  6456 	 print_err_msg(current_filename, locf(@1), locl(@2), "no program name defined in program configuration.");
  6599 	 print_err_msg(current_filename, locl(@1), locf(@2), "no program name defined in program configuration.");
  6457 	}
  6600 	}
  6458 | PROGRAM RETAIN optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6601 | PROGRAM RETAIN optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6459   {$$ = NULL;
  6602   {$$ = NULL;
  6460 	 yynerrs++;
  6603 	 yynerrs++;
  6461 	 print_err_msg(current_filename, locf(@2), locl(@3), "no program name defined in retentive program configuration.");
  6604 	 print_err_msg(current_filename, locl(@2), locf(@3), "no program name defined in retentive program configuration.");
  6462 	}
  6605 	}
  6463 | PROGRAM NON_RETAIN optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6606 | PROGRAM NON_RETAIN optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6464   {$$ = NULL;
  6607   {$$ = NULL;
  6465 	 yynerrs++;
  6608 	 yynerrs++;
  6466 	 print_err_msg(current_filename, locf(@2), locl(@3), "no program name defined in non-retentive program configuration.");
  6609 	 print_err_msg(current_filename, locl(@2), locf(@3), "no program name defined in non-retentive program configuration.");
  6467 	}
  6610 	}
  6468 | PROGRAM error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6611 | PROGRAM error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6469   {$$ = NULL;
  6612   {$$ = NULL;
  6470 	 print_err_msg(current_filename, locf(@1), locl(@3), "no program name defined in program configuration.");
  6613 	 print_err_msg(current_filename, locf(@2), locl(@2), "no program name defined in program configuration.");
  6471 	 yyerrok;
  6614 	 yyerrok;
  6472 	}
  6615 	}
  6473 | PROGRAM RETAIN error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6616 | PROGRAM RETAIN error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6474   {$$ = NULL;
  6617   {$$ = NULL;
  6475 	 print_err_msg(current_filename, locf(@2), locl(@4), "no program name defined in retentive program configuration.");
  6618 	 print_err_msg(current_filename, locf(@3), locl(@3), "no program name defined in retentive program configuration.");
  6476 	 yyerrok;
  6619 	 yyerrok;
  6477 	}
  6620 	}
  6478 | PROGRAM NON_RETAIN error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6621 | PROGRAM NON_RETAIN error optional_task_name ':' prev_declared_program_type_name optional_prog_conf_elements
  6479   {$$ = NULL;
  6622   {$$ = NULL;
  6480 	 print_err_msg(current_filename, locf(@2), locl(@4), "no program name defined in non-retentive program configuration.");
  6623 	 print_err_msg(current_filename, locf(@3), locl(@3), "no program name defined in non-retentive program configuration.");
  6481 	 yyerrok;
  6624 	 yyerrok;
  6482 	}
  6625 	}
  6483 | PROGRAM program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6626 | PROGRAM program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6484   {$$ = NULL;
  6627   {$$ = NULL;
  6485 	 yynerrs++;
  6628 	 yynerrs++;
  6486 	 print_err_msg(current_filename, locf(@3), locl(@4), "':' missing after program name or optional task name in program configuration.");
  6629 	 print_err_msg(current_filename, locl(@3), locf(@4), "':' missing after program name or optional task name in program configuration.");
  6487 	}
  6630 	}
  6488 | PROGRAM RETAIN program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6631 | PROGRAM RETAIN program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6489   {$$ = NULL;
  6632   {$$ = NULL;
  6490 	 yynerrs++;
  6633 	 yynerrs++;
  6491 	 print_err_msg(current_filename, locf(@4), locl(@5), "':' missing after program name or optional task name in program configuration.");
  6634 	 print_err_msg(current_filename, locl(@4), locf(@5), "':' missing after program name or optional task name in program configuration.");
  6492 	}
  6635 	}
  6493 | PROGRAM NON_RETAIN program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6636 | PROGRAM NON_RETAIN program_name optional_task_name prev_declared_program_type_name optional_prog_conf_elements
  6494   {$$ = NULL;
  6637   {$$ = NULL;
  6495 	 yynerrs++;
  6638 	 yynerrs++;
  6496 	 print_err_msg(current_filename, locf(@4), locl(@5), "':' missing after program name or optional task name in program configuration.");
  6639 	 print_err_msg(current_filename, locl(@4), locf(@5), "':' missing after program name or optional task name in program configuration.");
  6497 	}
  6640 	}
  6498 | PROGRAM program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6641 | PROGRAM program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6499   {$$ = NULL;
  6642   {$$ = NULL;
  6500 	 print_err_msg(current_filename, locf(@3), locl(@5), "expecting ':' after program name or optional task name in program configuration.");
  6643 	 print_err_msg(current_filename, locf(@4), locl(@4), "expecting ':' after program name or optional task name in program configuration.");
  6501 	 yyerrok;
  6644 	 yyerrok;
  6502 	}
  6645 	}
  6503 | PROGRAM RETAIN program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6646 | PROGRAM RETAIN program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6504   {$$ = NULL;
  6647   {$$ = NULL;
  6505 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting ':' after program name or optional task name in program configuration.");
  6648 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting ':' after program name or optional task name in program configuration.");
  6506 	 yyerrok;
  6649 	 yyerrok;
  6507 	}
  6650 	}
  6508 | PROGRAM NON_RETAIN program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6651 | PROGRAM NON_RETAIN program_name optional_task_name error prev_declared_program_type_name optional_prog_conf_elements
  6509   {$$ = NULL;
  6652   {$$ = NULL;
  6510 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting ':' after program name or optional task name in program configuration.");
  6653 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting ':' after program name or optional task name in program configuration.");
  6511 	 yyerrok;
  6654 	 yyerrok;
  6512 	}
  6655 	}
  6513 | PROGRAM program_name optional_task_name ':' optional_prog_conf_elements
  6656 | PROGRAM program_name optional_task_name ':' optional_prog_conf_elements
  6514   {$$ = NULL;
  6657   {$$ = NULL;
  6515 	 yynerrs++;
  6658 	 yynerrs++;
  6516 	 print_err_msg(current_filename, locf(@4), locl(@5), "no program type defined in program configuration.");
  6659 	 print_err_msg(current_filename, locl(@4), locf(@5), "no program type defined in program configuration.");
  6517 	}
  6660 	}
  6518 | PROGRAM RETAIN program_name optional_task_name ':' optional_prog_conf_elements
  6661 | PROGRAM RETAIN program_name optional_task_name ':' optional_prog_conf_elements
  6519   {$$ = NULL;
  6662   {$$ = NULL;
  6520 	 yynerrs++;
  6663 	 yynerrs++;
  6521 	 print_err_msg(current_filename, locf(@5), locl(@6), "no program type defined in program configuration.");
  6664 	 print_err_msg(current_filename, locl(@5), locf(@6), "no program type defined in program configuration.");
  6522 	}
  6665 	}
  6523 | PROGRAM NON_RETAIN program_name optional_task_name ':' optional_prog_conf_elements
  6666 | PROGRAM NON_RETAIN program_name optional_task_name ':' optional_prog_conf_elements
  6524   {$$ = NULL;
  6667   {$$ = NULL;
  6525 	 yynerrs++;
  6668 	 yynerrs++;
  6526 	 print_err_msg(current_filename, locf(@5), locl(@6), "no program type defined in program configuration.");
  6669 	 print_err_msg(current_filename, locl(@5), locf(@6), "no program type defined in program configuration.");
  6527   }
  6670   }
  6528 /* ERROR_CHECK_END */
  6671 /* ERROR_CHECK_END */
  6529 ;
  6672 ;
  6530 
  6673 
  6531 // helper symbol for program_configuration //
  6674 // helper symbol for program_configuration //
  6535 | WITH task_name
  6678 | WITH task_name
  6536 	{$$ = $2;}
  6679 	{$$ = $2;}
  6537 /* ERROR_CHECK_BEGIN */
  6680 /* ERROR_CHECK_BEGIN */
  6538 | WITH error
  6681 | WITH error
  6539   {$$ = NULL;
  6682   {$$ = NULL;
  6540 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid tack name in optional task name of program configuration.");
  6683 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid tack name in optional task name of program configuration.");
  6541 	 yyerrok;
  6684 	 yyerrok;
  6542 	}
  6685 	}
  6543 /* ERROR_CHECK_END */
  6686 /* ERROR_CHECK_END */
  6544 ;
  6687 ;
  6545 
  6688 
  6550 | '(' prog_conf_elements ')'
  6693 | '(' prog_conf_elements ')'
  6551 	{$$ = $2;}
  6694 	{$$ = $2;}
  6552 /* ERROR_CHECK_BEGIN */
  6695 /* ERROR_CHECK_BEGIN */
  6553 | '(' error ')'
  6696 | '(' error ')'
  6554   {$$ = NULL;
  6697   {$$ = NULL;
  6555 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid program configuration elements in program configuration.");
  6698 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid program configuration elements in program configuration.");
  6556 	 yyerrok;
  6699 	 yyerrok;
  6557 	}
  6700 	}
  6558 | '(' prog_conf_elements error
  6701 | '(' prog_conf_elements error
  6559   {$$ = NULL;
  6702   {$$ = NULL;
  6560 	 print_err_msg(current_filename, locf(@2), locl(@2), "')' missing at the end of program configuration elements in program configuration.");
  6703 	 print_err_msg(current_filename, locl(@2), locf(@3), "')' missing at the end of program configuration elements in program configuration.");
  6561 	 yyerrok;
  6704 	 yyerrok;
  6562 	}
  6705 	}
  6563 /* ERROR_CHECK_END */
  6706 /* ERROR_CHECK_END */
  6564 ;
  6707 ;
  6565 
  6708 
  6571 	{$$ = $1; $$->add_element($3);}
  6714 	{$$ = $1; $$->add_element($3);}
  6572 /* ERROR_CHECK_BEGIN */
  6715 /* ERROR_CHECK_BEGIN */
  6573 | prog_conf_elements prog_conf_element
  6716 | prog_conf_elements prog_conf_element
  6574   {$$ = NULL;
  6717   {$$ = NULL;
  6575 	 yynerrs++;
  6718 	 yynerrs++;
  6576 	 print_err_msg(current_filename, locf(@1), locl(@2), "',' missing in program configuration elements list.");
  6719 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in program configuration elements list.");
  6577 	}
  6720 	}
  6578 | prog_conf_elements ',' error
  6721 | prog_conf_elements ',' error
  6579   {$$ = NULL;
  6722   {$$ = NULL;
  6580 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value for program configuration element in program configuration list.");
  6723 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value for program configuration element in program configuration list.");
  6581 	 yyerrok;
  6724 	 yyerrok;
  6582 	}
  6725 	}
  6583 /* ERROR_CHECK_END */
  6726 /* ERROR_CHECK_END */
  6584 ;
  6727 ;
  6585 
  6728 
  6599   any_identifier WITH task_name
  6742   any_identifier WITH task_name
  6600 	{$$ = new fb_task_c($1, $3, locloc(@$));}
  6743 	{$$ = new fb_task_c($1, $3, locloc(@$));}
  6601 /* ERROR_CHECK_BEGIN */
  6744 /* ERROR_CHECK_BEGIN */
  6602 | any_identifier WITH error
  6745 | any_identifier WITH error
  6603   {$$ = NULL;
  6746   {$$ = NULL;
  6604 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid task name in function block configuration.");
  6747 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid task name in function block configuration.");
  6605 	 yyerrok;
  6748 	 yyerrok;
  6606 	}
  6749 	}
  6607 /* ERROR_CHECK_END */
  6750 /* ERROR_CHECK_END */
  6608 ;
  6751 ;
  6609 
  6752 
  6645 	{$$ = new prog_cnxn_sendto_c($1, $3, locloc(@$));}
  6788 	{$$ = new prog_cnxn_sendto_c($1, $3, locloc(@$));}
  6646 /* ERROR_CHECK_BEGIN */
  6789 /* ERROR_CHECK_BEGIN */
  6647 | any_symbolic_variable constant
  6790 | any_symbolic_variable constant
  6648   {$$ = NULL;
  6791   {$$ = NULL;
  6649 	 yynerrs++;
  6792 	 yynerrs++;
  6650 	 print_err_msg(current_filename, locf(@2), locl(@2), "':=' missing between parameter and value in program configuration element.");
  6793 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing between parameter and value in program configuration element.");
  6651 	}
  6794 	}
  6652 | any_symbolic_variable enumerated_value
  6795 | any_symbolic_variable enumerated_value
  6653   {$$ = NULL;
  6796   {$$ = NULL;
  6654 	 yynerrs++;
  6797 	 yynerrs++;
  6655 	 print_err_msg(current_filename, locf(@2), locl(@2), "':=' missing between parameter and value in program configuration element.");
  6798 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing between parameter and value in program configuration element.");
  6656 	}
  6799 	}
  6657 | any_symbolic_variable data_sink
  6800 | any_symbolic_variable data_sink
  6658   {$$ = NULL;
  6801   {$$ = NULL;
  6659 	 yynerrs++;
  6802 	 yynerrs++;
  6660 	 print_err_msg(current_filename, locf(@2), locl(@2), "':=' or '=>' missing between parameter and variable in program configuration element.");
  6803 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' or '=>' missing between parameter and variable in program configuration element.");
  6661 	}
  6804 	}
  6662 | any_symbolic_variable error prog_data_source
  6805 | any_symbolic_variable error prog_data_source
  6663   {$$ = NULL;
  6806   {$$ = NULL;
  6664 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' or '=>' after parameter in program configuration element.");
  6807 	 print_err_msg(current_filename, locl(@1), locf(@2), "expecting ':=' or '=>' after parameter in program configuration element.");
  6665 	 yyerrok;
  6808 	 yyerrok;
  6666 	}
  6809 	}
  6667 | any_symbolic_variable ASSIGN error
  6810 | any_symbolic_variable ASSIGN error
  6668   {$$ = NULL;
  6811   {$$ = NULL;
  6669 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid value or variable in program configuration assignment element.");
  6812 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid value or variable in program configuration assignment element.");
  6670 	 yyerrok;
  6813 	 yyerrok;
  6671 	}
  6814 	}
  6672 | any_symbolic_variable SENDTO error
  6815 | any_symbolic_variable SENDTO error
  6673   {$$ = NULL;
  6816   {$$ = NULL;
  6674 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid variable in program configuration sendto element.");
  6817 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid variable in program configuration sendto element.");
  6675 	 yyerrok;
  6818 	 yyerrok;
  6676 	}
  6819 	}
  6677 /* ERROR_CHECK_END */
  6820 /* ERROR_CHECK_END */
  6678 ;
  6821 ;
  6679 
  6822 
  6694 	{$$ = new instance_specific_initializations_c($2, locloc(@$));}
  6837 	{$$ = new instance_specific_initializations_c($2, locloc(@$));}
  6695 /* ERROR_CHECK_BEGIN */
  6838 /* ERROR_CHECK_BEGIN */
  6696 | VAR_CONFIG END_VAR
  6839 | VAR_CONFIG END_VAR
  6697 	{$$ = NULL;
  6840 	{$$ = NULL;
  6698 	 yynerrs++;
  6841 	 yynerrs++;
  6699 	 print_err_msg(current_filename, locf(@1), locl(@2), "no variable declared in configuration variable(s) initialization.");
  6842 	 print_err_msg(current_filename, locl(@1), locf(@2), "no variable declared in configuration variable(s) initialization.");
  6700 	}
  6843 	}
  6701 | VAR_CONFIG error instance_specific_init_list END_VAR
  6844 | VAR_CONFIG error instance_specific_init_list END_VAR
  6702 	{$$ = NULL;
  6845 	{$$ = NULL;
  6703 	 print_err_msg(current_filename, locf(@1), locl(@3), "unexpected token after 'VAR_CONFIG' in configuration variable(s) initialization.");
  6846 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected token after 'VAR_CONFIG' in configuration variable(s) initialization.");
  6704 	 yyerrok;
  6847 	 yyerrok;
  6705 	}
  6848 	}
  6706 | VAR_CONFIG error END_VAR
  6849 | VAR_CONFIG error END_VAR
  6707 	{$$ = NULL;
  6850 	{$$ = NULL;
  6708 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in configuration variable(s) initialization.");
  6851 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in configuration variable(s) initialization.");
  6709 	 yyerrok;
  6852 	 yyerrok;
  6710 	}
  6853 	}
  6711 /* ERROR_CHECK_END */
  6854 /* ERROR_CHECK_END */
  6712 ;
  6855 ;
  6713 
  6856 
  6716   instance_specific_init ';'
  6859   instance_specific_init ';'
  6717 	{$$ = new instance_specific_init_list_c(locloc(@$)); $$->add_element($1);}
  6860 	{$$ = new instance_specific_init_list_c(locloc(@$)); $$->add_element($1);}
  6718 | instance_specific_init_list instance_specific_init ';'
  6861 | instance_specific_init_list instance_specific_init ';'
  6719 	{$$ = $1; $$->add_element($2);}
  6862 	{$$ = $1; $$->add_element($2);}
  6720 /* ERROR_CHECK_BEGIN */
  6863 /* ERROR_CHECK_BEGIN */
       
  6864 | error ';'
       
  6865   {$$ = new instance_specific_init_list_c(locloc(@$));
       
  6866 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid configuration variable initialization.");
       
  6867 	 yyerrok;
       
  6868 	}
  6721 | instance_specific_init error
  6869 | instance_specific_init error
  6722   {$$ = NULL;
  6870   {$$ = new instance_specific_init_list_c(locloc(@$));
  6723 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at the end of configuration variable initialization.");
  6871 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at the end of configuration variable initialization.");
  6724 	 yyerrok;
  6872 	 yyerrok;
  6725 	}
  6873 	}
  6726 | instance_specific_init_list instance_specific_init error
  6874 | instance_specific_init_list instance_specific_init error
  6727   {$$ = NULL;
  6875   {$$ = $1;
  6728 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at the end of configuration variable initialization.");
  6876 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at the end of configuration variable initialization.");
  6729 	 yyerrok;
  6877 	 yyerrok;
  6730 	}
  6878 	}
  6731 | instance_specific_init_list error ';'
  6879 | instance_specific_init_list error ';'
  6732   {$$ = NULL;
  6880   {$$ = $1;
  6733 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid configuration variable initialization.");
  6881 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid configuration variable initialization.");
  6734 	 yyerrok;
  6882 	 yyerrok;
  6735 	}
  6883 	}
  6736 | instance_specific_init_list ';'
  6884 | instance_specific_init_list ';'
  6737   {$$ = NULL;
  6885   {$$ = $1;
  6738 	 yynerrs++;
  6886 	 yynerrs++;
  6739 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after configuration variable initialization.");
  6887 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after configuration variable initialization.");
  6740 	}
  6888 	}
  6741 /* ERROR_CHECK_END */
  6889 /* ERROR_CHECK_END */
  6742 ;
  6890 ;
  6770 	{$$ = new fb_initialization_c($1, $3, locloc(@$));}
  6918 	{$$ = new fb_initialization_c($1, $3, locloc(@$));}
  6771 /* ERROR_CHECK_BEGIN */
  6919 /* ERROR_CHECK_BEGIN */
  6772 | function_block_type_name structure_initialization
  6920 | function_block_type_name structure_initialization
  6773   {$$ = NULL;
  6921   {$$ = NULL;
  6774 	 yynerrs++;
  6922 	 yynerrs++;
  6775 	 print_err_msg(current_filename, locf(@2), locl(@2), "':=' missing between function block name and initialization in function block initialization.");
  6923 	 print_err_msg(current_filename, locl(@1), locf(@2), "':=' missing between function block name and initialization in function block initialization.");
  6776 	}
  6924 	}
  6777 | function_block_type_name error structure_initialization
  6925 | function_block_type_name error structure_initialization
  6778   {$$ = NULL;
  6926   {$$ = NULL;
  6779 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' after function block name in function block initialization.");
  6927 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':=' after function block name in function block initialization.");
  6780 	 yyerrok;
  6928 	 yyerrok;
  6804 	{$$ = $1; $$->add_element($2);}
  6952 	{$$ = $1; $$->add_element($2);}
  6805 | instruction_list pragma
  6953 | instruction_list pragma
  6806 	{$$ = $1; $$->add_element($2);}
  6954 	{$$ = $1; $$->add_element($2);}
  6807 /* ERROR_CHECK_BEGIN */
  6955 /* ERROR_CHECK_BEGIN */
  6808 | instruction_list error
  6956 | instruction_list error
  6809   {$$ = NULL;
  6957   {$$ = $1;
  6810 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid IL instruction.");
  6958 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid IL instruction.");
  6811 	 yyerrok;
  6959 	 yyerrok;
  6812 	}
  6960 	}
  6813 /* ERROR_CHECK_END */
  6961 /* ERROR_CHECK_END */
  6814 ;
  6962 ;
  6815 
  6963 
  6821 | label ':' il_incomplete_instruction eol_list
  6969 | label ':' il_incomplete_instruction eol_list
  6822 	{$$ = new il_instruction_c($1, $3, locloc(@$));}
  6970 	{$$ = new il_instruction_c($1, $3, locloc(@$));}
  6823 /* ERROR_CHECK_BEGIN */
  6971 /* ERROR_CHECK_BEGIN */
  6824 | error eol_list
  6972 | error eol_list
  6825 	{$$ = NULL;
  6973 	{$$ = NULL;
  6826 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid IL instruction.");
  6974 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid IL instruction.");
  6827 	 yyerrok;
  6975 	 yyerrok;
  6828 	}
  6976 	}
  6829 | il_incomplete_instruction error
  6977 | il_incomplete_instruction error
  6830 	{$$ = NULL;
  6978 	{$$ = NULL;
  6831 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing at the end of IL instruction.");
  6979 	 print_err_msg(current_filename, locl(@1), locf(@2), "EOL missing at the end of IL instruction.");
  6832 	 yyerrok;
  6980 	 yyerrok;
  6833 	}
  6981 	}
  6834 | error ':' il_incomplete_instruction eol_list
  6982 | error ':' il_incomplete_instruction eol_list
  6835 	{$$ = NULL;
  6983 	{$$ = NULL;
  6836 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid label in IL instruction.");
  6984 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid label in IL instruction.");
  6837 	 yyerrok;
  6985 	 yyerrok;
  6838 	}
  6986 	}
  6839 | label il_incomplete_instruction eol_list
  6987 | label il_incomplete_instruction eol_list
  6840 	{$$ = NULL;
  6988 	{$$ = NULL;
  6841 	 yynerrs++;
  6989 	 yynerrs++;
  6842 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing after label in IL instruction.");
  6990 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing after label in IL instruction.");
  6843 	}
  6991 	}
  6844 | label error il_incomplete_instruction eol_list
  6992 | label error il_incomplete_instruction eol_list
  6845 	{$$ = NULL;
  6993 	{$$ = NULL;
  6846 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting ':' after label in IL instruction.");
  6994 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ':' after label in IL instruction.");
  6847 	 yyerrok;
  6995 	 yyerrok;
  6848 	}
  6996 	}
  6849 | label ':' error eol_list
  6997 | label ':' error eol_list
  6850 	{$$ = NULL;
  6998 	{$$ = NULL;
  6851 	 print_err_msg(current_filename, locf(@2), locl(@4), "invalid IL instruction.");
  6999 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid IL instruction.");
  6852 	 yyerrok;
  7000 	 yyerrok;
  6853 	}
  7001 	}
  6854 | label ':' il_incomplete_instruction error
  7002 | label ':' il_incomplete_instruction error
  6855 	{$$ = NULL;
  7003 	{$$ = NULL;
  6856 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing at the end of IL instruction.");
  7004 	 print_err_msg(current_filename, locl(@3), locf(@4), "EOL missing at the end of IL instruction.");
  6857 	 yyerrok;
  7005 	 yyerrok;
  6858 	}
  7006 	}
  6859 /* ERROR_CHECK_END */
  7007 /* ERROR_CHECK_END */
  6860 ;
  7008 ;
  6861 
  7009 
  6973 | il_expr_operator_clash_eol_list simple_instr_list ')'
  7121 | il_expr_operator_clash_eol_list simple_instr_list ')'
  6974 	{$$ = new il_expression_c($1, NULL, $2, locloc(@$));}
  7122 	{$$ = new il_expression_c($1, NULL, $2, locloc(@$));}
  6975 /* ERROR_CHECK_BEGIN */
  7123 /* ERROR_CHECK_BEGIN */
  6976 | il_expr_operator_noclash '(' eol_list error
  7124 | il_expr_operator_noclash '(' eol_list error
  6977   {$$ = NULL;
  7125   {$$ = NULL;
  6978 	 print_err_msg(current_filename, locf(@3), locl(@3), "')' missing at the end of IL expression.");
  7126 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing at the end of IL expression.");
  6979 	 yyerrok;
  7127 	 yyerrok;
  6980 	}
  7128 	}
  6981 | il_expr_operator_noclash '(' il_operand eol_list error
  7129 | il_expr_operator_noclash '(' il_operand eol_list error
  6982   {$$ = NULL;
  7130   {$$ = NULL;
  6983 	 print_err_msg(current_filename, locf(@4), locl(@4), "')' missing at the end of IL expression.");
  7131 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of IL expression.");
  6984 	 yyerrok;
  7132 	 yyerrok;
  6985 	}
  7133 	}
  6986 | il_expr_operator_noclash '(' eol_list simple_instr_list error
  7134 | il_expr_operator_noclash '(' eol_list simple_instr_list error
  6987   {$$ = NULL;
  7135   {$$ = NULL;
  6988 	 print_err_msg(current_filename, locf(@4), locl(@4), "')' missing at the end of IL expression.");
  7136 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of IL expression.");
  6989 	 yyerrok;
  7137 	 yyerrok;
  6990 	}
  7138 	}
  6991 | il_expr_operator_noclash '(' il_operand eol_list simple_instr_list error
  7139 | il_expr_operator_noclash '(' il_operand eol_list simple_instr_list error
  6992   {$$ = NULL;
  7140   {$$ = NULL;
  6993 	 print_err_msg(current_filename, locf(@5), locl(@5), "')' missing at the end of IL expression.");
  7141 	 print_err_msg(current_filename, locl(@5), locf(@6), "')' missing at the end of IL expression.");
  6994 	 yyerrok;
  7142 	 yyerrok;
  6995 	}
  7143 	}
  6996 | il_expr_operator_clash '(' il_operand eol_list error
  7144 | il_expr_operator_clash '(' il_operand eol_list error
  6997   {$$ = NULL;
  7145   {$$ = NULL;
  6998 	 print_err_msg(current_filename, locf(@4), locl(@4), "')' missing at the end of IL expression.");
  7146 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of IL expression.");
  6999 	 yyerrok;
  7147 	 yyerrok;
  7000 	}
  7148 	}
  7001 | il_expr_operator_clash '(' il_operand eol_list simple_instr_list error
  7149 | il_expr_operator_clash '(' il_operand eol_list simple_instr_list error
  7002   {$$ = NULL;
  7150   {$$ = NULL;
  7003 	 print_err_msg(current_filename, locf(@5), locl(@5), "')' missing at the end of IL expression.");
  7151 	 print_err_msg(current_filename, locl(@5), locf(@6), "')' missing at the end of IL expression.");
  7004 	 yyerrok;
  7152 	 yyerrok;
  7005 	}
  7153 	}
  7006 | il_expr_operator_clash_eol_list simple_instr_list error
  7154 | il_expr_operator_clash_eol_list simple_instr_list error
  7007   {$$ = NULL;
  7155   {$$ = NULL;
  7008 	 print_err_msg(current_filename, locf(@2), locl(@2), "')' missing at the end of IL expression.");
  7156 	 print_err_msg(current_filename, locl(@2), locf(@3), "')' missing at the end of IL expression.");
  7009 	 yyerrok;
  7157 	 yyerrok;
  7010 	}
  7158 	}
  7011 /* ERROR_CHECK_END */
  7159 /* ERROR_CHECK_END */
  7012 ;
  7160 ;
  7013 
  7161 
  7016   il_jump_operator label
  7164   il_jump_operator label
  7017 	{$$ = new il_jump_operation_c($1, $2, locloc(@$));}
  7165 	{$$ = new il_jump_operation_c($1, $2, locloc(@$));}
  7018 /* ERROR_CHECK_BEGIN */
  7166 /* ERROR_CHECK_BEGIN */
  7019 | il_jump_operator error
  7167 | il_jump_operator error
  7020   {$$ = NULL;
  7168   {$$ = NULL;
  7021 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid label defined in IL jump operation.");
  7169 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid label defined in IL jump operation.");
  7022 	 yyerrok;
  7170 	 yyerrok;
  7023 	}
  7171 	}
  7024 /* ERROR_CHECK_END */
  7172 /* ERROR_CHECK_END */
  7025 ;
  7173 ;
  7026 
  7174 
  7038 | il_call_operator prev_declared_fb_name '(' eol_list il_param_list ')'
  7186 | il_call_operator prev_declared_fb_name '(' eol_list il_param_list ')'
  7039 	{$$ = new il_fb_call_c($1, $2, NULL, $5, locloc(@$));}
  7187 	{$$ = new il_fb_call_c($1, $2, NULL, $5, locloc(@$));}
  7040 /* ERROR_CHECK_BEGIN */
  7188 /* ERROR_CHECK_BEGIN */
  7041 | il_call_operator error
  7189 | il_call_operator error
  7042   {$$ = NULL;
  7190   {$$ = NULL;
  7043 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid function block name defined in IL function block call.");
  7191 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name defined in IL function block call.");
  7044 	 yyerrok;
  7192 	 yyerrok;
  7045 	}
  7193 	}
  7046 | il_call_operator '(' ')'
  7194 | il_call_operator '(' ')'
  7047   {$$ = NULL;
  7195   {$$ = NULL;
  7048 	 yynerrs++;
  7196 	 yynerrs++;
  7049 	 print_err_msg(current_filename, locf(@1), locl(@2), "no function block name defined in IL function block call.");
  7197 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block name defined in IL function block call.");
  7050 	}
  7198 	}
  7051 | il_call_operator '(' eol_list ')'
  7199 | il_call_operator '(' eol_list ')'
  7052   {$$ = NULL;
  7200   {$$ = NULL;
  7053 	 yynerrs++;
  7201 	 yynerrs++;
  7054 	 print_err_msg(current_filename, locf(@1), locl(@2), "no function block name defined in IL function block call.");
  7202 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block name defined in IL function block call.");
  7055 	}
  7203 	}
  7056 | il_call_operator '(' il_operand_list ')'
  7204 | il_call_operator '(' il_operand_list ')'
  7057   {$$ = NULL;
  7205   {$$ = NULL;
  7058 	 yynerrs++;
  7206 	 yynerrs++;
  7059 	 print_err_msg(current_filename, locf(@1), locl(@2), "no function block name defined in IL function block call.");
  7207 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block name defined in IL function block call.");
  7060 	}
  7208 	}
  7061 | il_call_operator '(' eol_list il_param_list ')'
  7209 | il_call_operator '(' eol_list il_param_list ')'
  7062   {$$ = NULL;
  7210   {$$ = NULL;
  7063 	 yynerrs++;
  7211 	 yynerrs++;
  7064 	 print_err_msg(current_filename, locf(@1), locl(@2), "no function block name defined in IL function block call.");
  7212 	 print_err_msg(current_filename, locl(@1), locf(@2), "no function block name defined in IL function block call.");
  7065 	}
  7213 	}
  7066 | il_call_operator error '(' ')'
  7214 | il_call_operator error '(' ')'
  7067   {$$ = NULL;
  7215   {$$ = NULL;
  7068 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid function block name defined in IL function block call.");
  7216 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name defined in IL function block call.");
  7069 	 yyerrok;
  7217 	 yyerrok;
  7070 	}
  7218 	}
  7071 | il_call_operator error '(' eol_list ')'
  7219 | il_call_operator error '(' eol_list ')'
  7072   {$$ = NULL;
  7220   {$$ = NULL;
  7073 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid function block name defined in IL function block call.");
  7221 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name defined in IL function block call.");
  7074 	 yyerrok;
  7222 	 yyerrok;
  7075 	}
  7223 	}
  7076 | il_call_operator error '(' il_operand_list ')'
  7224 | il_call_operator error '(' il_operand_list ')'
  7077   {$$ = NULL;
  7225   {$$ = NULL;
  7078 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid function block name defined in IL function block call.");
  7226 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name defined in IL function block call.");
  7079 	 yyerrok;
  7227 	 yyerrok;
  7080 	}
  7228 	}
  7081 | il_call_operator error '(' eol_list il_param_list ')'
  7229 | il_call_operator error '(' eol_list il_param_list ')'
  7082   {$$ = NULL;
  7230   {$$ = NULL;
  7083 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid function block name defined in IL function block call.");
  7231 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid function block name defined in IL function block call.");
  7084 	 yyerrok;
  7232 	 yyerrok;
  7085 	}
  7233 	}
  7086 | il_call_operator prev_declared_fb_name ')'
  7234 | il_call_operator prev_declared_fb_name ')'
  7087   {$$ = NULL;
  7235   {$$ = NULL;
  7088 	 yynerrs++;
  7236 	 yynerrs++;
  7089 	 print_err_msg(current_filename, locf(@2), locl(@3), "'(' missing after function block name defined in IL function block call.");
  7237 	 print_err_msg(current_filename, locl(@2), locf(@3), "'(' missing after function block name defined in IL function block call.");
  7090 	}
  7238 	}
  7091 | il_call_operator prev_declared_fb_name il_operand_list ')'
  7239 | il_call_operator prev_declared_fb_name il_operand_list ')'
  7092   {$$ = NULL;
  7240   {$$ = NULL;
  7093 	 yynerrs++;
  7241 	 yynerrs++;
  7094 	 print_err_msg(current_filename, locf(@2), locl(@3), "'(' missing after function block name defined in IL function block call.");
  7242 	 print_err_msg(current_filename, locl(@2), locf(@3), "'(' missing after function block name defined in IL function block call.");
  7095 	}
  7243 	}
  7096 | il_call_operator prev_declared_fb_name '(' error
  7244 | il_call_operator prev_declared_fb_name '(' error
  7097   {$$ = NULL;
  7245   {$$ = NULL;
  7098 	 print_err_msg(current_filename, locf(@1), locl(@3), "')' missing at the end of IL function block call.");
  7246 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing at the end of IL function block call.");
  7099 	 yyerrok;
  7247 	 yyerrok;
  7100 	}
  7248 	}
  7101 | il_call_operator prev_declared_fb_name '(' eol_list error
  7249 | il_call_operator prev_declared_fb_name '(' eol_list error
  7102   {$$ = NULL;
  7250   {$$ = NULL;
  7103 	 print_err_msg(current_filename, locf(@1), locl(@3), "')' missing at the end of IL function block call.");
  7251 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of IL function block call.");
  7104 	 yyerrok;
  7252 	 yyerrok;
  7105 	}
  7253 	}
  7106 | il_call_operator prev_declared_fb_name '(' il_operand_list error
  7254 | il_call_operator prev_declared_fb_name '(' il_operand_list error
  7107   {$$ = NULL;
  7255   {$$ = NULL;
  7108 	 print_err_msg(current_filename, locf(@1), locl(@3), "')' missing at the end of IL function block call.");
  7256 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of IL function block call.");
  7109 	 yyerrok;
  7257 	 yyerrok;
  7110 	}
  7258 	}
  7111 /* ERROR_CHECK_END */
  7259 /* ERROR_CHECK_END */
  7112 ;
  7260 ;
  7113 
  7261 
  7176 | il_expr_operator_clash_eol_list il_param_list ')'
  7324 | il_expr_operator_clash_eol_list il_param_list ')'
  7177 	{$$ = new il_formal_funct_call_c(il_operator_c_2_identifier_c($1), $2, locloc(@$));}
  7325 	{$$ = new il_formal_funct_call_c(il_operator_c_2_identifier_c($1), $2, locloc(@$));}
  7178 /* ERROR_CHECK_BEGIN */
  7326 /* ERROR_CHECK_BEGIN */
  7179 | function_name_no_clashes '(' eol_list error ')'
  7327 | function_name_no_clashes '(' eol_list error ')'
  7180   {$$ = NULL;
  7328   {$$ = NULL;
  7181 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid parameter list defined in IL formal function call.");
  7329 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid parameter list defined in IL formal function call.");
  7182 	 yyerrok;
  7330 	 yyerrok;
  7183 	} 
  7331 	} 
  7184 | function_name_simpleop_clashes '(' eol_list error ')'
  7332 | function_name_simpleop_clashes '(' eol_list error ')'
  7185   {$$ = NULL;
  7333   {$$ = NULL;
  7186 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid parameter list defined in IL formal function call.");
  7334 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid parameter list defined in IL formal function call.");
  7187 	 yyerrok;
  7335 	 yyerrok;
  7188 	} 
  7336 	} 
  7189 | il_expr_operator_clash_eol_list error ')'
  7337 | il_expr_operator_clash_eol_list error ')'
  7190   {$$ = NULL;
  7338   {$$ = NULL;
  7191 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid parameter list defined in IL formal function call.");
  7339 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter list defined in IL formal function call.");
  7192 	 yyerrok;
  7340 	 yyerrok;
  7193 	} 
  7341 	} 
  7194 /* ERROR_CHECK_END */
  7342 /* ERROR_CHECK_END */
  7195 ;
  7343 ;
  7196 
  7344 
  7199   il_expr_operator_clash '(' eol_list
  7347   il_expr_operator_clash '(' eol_list
  7200 	{$$ = $1;}
  7348 	{$$ = $1;}
  7201 /* ERROR_CHECK_BEGIN */
  7349 /* ERROR_CHECK_BEGIN */
  7202 | il_expr_operator_clash '(' error
  7350 | il_expr_operator_clash '(' error
  7203   {$$ = NULL;
  7351   {$$ = NULL;
  7204 	 yynerrs++;
  7352 	 print_err_msg(current_filename, locl(@2), locf(@3), "EOL missing after '(' in IL instruction.");
  7205 	 print_err_msg(current_filename, locf(@1), locl(@2), "EOL missing after '(' in IL instruction.");
  7353 	 yyerrok;
  7206 	}
  7354 	}
  7207 /* ERROR_CHECK_END */
  7355 /* ERROR_CHECK_END */
  7208 ;
  7356 ;
  7209 
  7357 
  7210 
  7358 
  7230 	{$$ = $1; $$->add_element($3);}
  7378 	{$$ = $1; $$->add_element($3);}
  7231 /* ERROR_CHECK_BEGIN */
  7379 /* ERROR_CHECK_BEGIN */
  7232 | il_operand_list2 il_operand
  7380 | il_operand_list2 il_operand
  7233   {$$ = NULL;
  7381   {$$ = NULL;
  7234 	 yynerrs++;
  7382 	 yynerrs++;
  7235 	 print_err_msg(current_filename, locf(@1), locl(@2), "',' missing in IL operand list.");
  7383 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing in IL operand list.");
  7236 	}
  7384 	}
  7237 | il_formal_funct_call error il_operand
  7385 | il_formal_funct_call error il_operand
  7238   {$$ = NULL;
  7386   {$$ = NULL;
  7239 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting ',' in IL operand list.");
  7387 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ',' in IL operand list.");
  7240 	 yyerrok;
  7388 	 yyerrok;
  7241 	}
  7389 	}
  7242 | il_formal_funct_call ',' error
  7390 | il_formal_funct_call ',' error
  7243   {$$ = NULL;
  7391   {$$ = NULL;
  7244 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid operand in IL operand list.");
  7392 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid operand in IL operand list.");
  7245 	 yyerrok;
  7393 	 yyerrok;
  7246 	}
  7394 	}
  7247 /* ERROR_CHECK_END */
  7395 /* ERROR_CHECK_END */
  7248 ;
  7396 ;
  7249 
  7397 
  7261 | il_expression eol_list
  7409 | il_expression eol_list
  7262 | il_formal_funct_call eol_list
  7410 | il_formal_funct_call eol_list
  7263 /* ERROR_CHECK_BEGIN */
  7411 /* ERROR_CHECK_BEGIN */
  7264 | il_expression error
  7412 | il_expression error
  7265   {$$ = NULL;
  7413   {$$ = NULL;
  7266 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing after expression IL instruction.");
  7414 	 print_err_msg(current_filename, locl(@1), locf(@2), "EOL missing after expression IL instruction.");
  7267 	 yyerrok;
  7415 	 yyerrok;
  7268 	}
  7416 	}
  7269 | il_formal_funct_call error
  7417 | il_formal_funct_call error
  7270   {$$ = NULL;
  7418   {$$ = NULL;
  7271 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing after formal function call IL instruction.");
  7419 	 print_err_msg(current_filename, locl(@1), locf(@2), "EOL missing after formal function call IL instruction.");
  7272 	 yyerrok;
  7420 	 yyerrok;
  7273 	}
  7421 	}
  7274 /* ERROR_CHECK_END */
  7422 /* ERROR_CHECK_END */
  7275 ;
  7423 ;
  7276 
  7424 
  7294 	{$$ = $1; $$->add_element($2);}
  7442 	{$$ = $1; $$->add_element($2);}
  7295 | il_param_last_instruction
  7443 | il_param_last_instruction
  7296 	{$$ = new il_param_list_c(locloc(@$)); $$->add_element($1);}
  7444 	{$$ = new il_param_list_c(locloc(@$)); $$->add_element($1);}
  7297 /* ERROR_CHECK_BEGIN */
  7445 /* ERROR_CHECK_BEGIN */
  7298 | il_param_instruction_list error
  7446 | il_param_instruction_list error
  7299   {$$ = NULL;
  7447   {$$ = $1;
  7300 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter assignment in parameter assignment list.");
  7448 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter assignment in parameter assignment list.");
  7301 	 yyerrok;
  7449 	 yyerrok;
  7302 	}
  7450 	}
  7303 | il_param_last_instruction il_param_last_instruction
  7451 | il_param_last_instruction il_param_last_instruction
  7304   {$$ = NULL;
  7452   {$$ = new il_param_list_c(locloc(@$));
  7305 	 yynerrs++;
  7453 	 yynerrs++;
  7306 	 print_err_msg(current_filename, locf(@1), locl(@1), "',' missing at the end of parameter assignment in parameter assignment list.");
  7454 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing at the end of parameter assignment in parameter assignment list.");
  7307 	}
  7455 	}
  7308 | il_param_instruction_list il_param_last_instruction il_param_last_instruction
  7456 | il_param_instruction_list il_param_last_instruction il_param_last_instruction
  7309   {$$ = NULL;
  7457   {$$ = $1;
  7310 	 yynerrs++;
  7458 	 yynerrs++;
  7311 	 print_err_msg(current_filename, locf(@2), locl(@2), "',' missing at the end of parameter assignment in parameter assignment list.");
  7459 	 print_err_msg(current_filename, locl(@2), locf(@3), "',' missing at the end of parameter assignment in parameter assignment list.");
  7312 	}
  7460 	}
  7313 /* ERROR_CHECK_END */
  7461 /* ERROR_CHECK_END */
  7314 ;
  7462 ;
  7315 
  7463 
  7316 
  7464 
  7320 	{$$ = new il_param_list_c(locloc(@$)); $$->add_element($1);}
  7468 	{$$ = new il_param_list_c(locloc(@$)); $$->add_element($1);}
  7321 | il_param_instruction_list il_param_instruction
  7469 | il_param_instruction_list il_param_instruction
  7322 	{$$ = $1; $$->add_element($2);}
  7470 	{$$ = $1; $$->add_element($2);}
  7323 /* ERROR_CHECK_BEGIN */
  7471 /* ERROR_CHECK_BEGIN */
  7324 | il_param_last_instruction il_param_instruction
  7472 | il_param_last_instruction il_param_instruction
  7325   {$$ = NULL;
  7473   {$$ = new il_param_list_c(locloc(@$));
  7326 	 yynerrs++;
  7474 	 yynerrs++;
  7327 	 print_err_msg(current_filename, locf(@1), locl(@1), "',' missing at the end of parameter assignment in parameter assignment list.");
  7475 	 print_err_msg(current_filename, locl(@1), locf(@2), "',' missing at the end of parameter assignment in parameter assignment list.");
  7328 	}
  7476 	}
  7329 | il_param_instruction_list il_param_last_instruction il_param_instruction
  7477 | il_param_instruction_list il_param_last_instruction il_param_instruction
  7330   {$$ = NULL;
  7478   {$$ = $1;
  7331 	 yynerrs++;
  7479 	 yynerrs++;
  7332 	 print_err_msg(current_filename, locf(@2), locl(@2), "',' missing at the end of parameter assignment in parameter assignment list.");
  7480 	 print_err_msg(current_filename, locl(@2), locf(@3), "',' missing at the end of parameter assignment in parameter assignment list.");
  7333 	}
  7481 	}
  7334 /* ERROR_CHECK_END */
  7482 /* ERROR_CHECK_END */
  7335 ;
  7483 ;
  7336 
  7484 
  7337 
  7485 
  7339   il_param_assignment ',' eol_list
  7487   il_param_assignment ',' eol_list
  7340 | il_param_out_assignment ',' eol_list
  7488 | il_param_out_assignment ',' eol_list
  7341 /* ERROR_CHECK_BEGIN */
  7489 /* ERROR_CHECK_BEGIN */
  7342 | il_param_assignment ',' error
  7490 | il_param_assignment ',' error
  7343   {$$ = NULL;
  7491   {$$ = NULL;
  7344 	 print_err_msg(current_filename, locf(@2), locl(@2), "EOL missing at the end of parameter assignment in parameter assignment list.");
  7492 	 print_err_msg(current_filename, locl(@2), locf(@3), "EOL missing at the end of parameter assignment in parameter assignment list.");
  7345 	 yyerrok;
  7493 	 yyerrok;
  7346 	}
  7494 	}
  7347 | il_param_out_assignment ',' error
  7495 | il_param_out_assignment ',' error
  7348   {$$ = NULL;
  7496   {$$ = NULL;
  7349 	 print_err_msg(current_filename, locf(@2), locl(@2), "EOL missing at the end of parameter out assignment in parameter assignment list.");
  7497 	 print_err_msg(current_filename, locl(@2), locf(@3), "EOL missing at the end of parameter out assignment in parameter assignment list.");
  7350 	 yyerrok;
  7498 	 yyerrok;
  7351 	}
  7499 	}
  7352 /* ERROR_CHECK_END */
  7500 /* ERROR_CHECK_END */
  7353 ;
  7501 ;
  7354 
  7502 
  7357   il_param_assignment eol_list
  7505   il_param_assignment eol_list
  7358 | il_param_out_assignment eol_list
  7506 | il_param_out_assignment eol_list
  7359 /* ERROR_CHECK_BEGIN */
  7507 /* ERROR_CHECK_BEGIN */
  7360 | il_param_assignment error
  7508 | il_param_assignment error
  7361   {$$ = NULL;
  7509   {$$ = NULL;
  7362 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing at the end of last parameter assignment in parameter assignment list.");
  7510 	 print_err_msg(current_filename, locl(@1), locf(@2), "EOL missing at the end of last parameter assignment in parameter assignment list.");
  7363 	 yyerrok;
  7511 	 yyerrok;
  7364 	}
  7512 	}
  7365 | il_param_out_assignment error
  7513 | il_param_out_assignment error
  7366   {$$ = NULL;
  7514   {$$ = NULL;
  7367 	 print_err_msg(current_filename, locf(@1), locl(@1), "EOL missing at the end of last parameter out assignment in parameter assignment list.");
  7515 	 print_err_msg(current_filename, locl(@1), locf(@2), "EOL missing at the end of last parameter out assignment in parameter assignment list.");
  7368 	 yyerrok;
  7516 	 yyerrok;
  7369 	}
  7517 	}
  7370 /* ERROR_CHECK_END */
  7518 /* ERROR_CHECK_END */
  7371 
  7519 
  7372 ;
  7520 ;
  7378 | il_assign_operator '(' eol_list simple_instr_list ')'
  7526 | il_assign_operator '(' eol_list simple_instr_list ')'
  7379 	{$$ = new il_param_assignment_c($1, NULL, $4, locloc(@$));}
  7527 	{$$ = new il_param_assignment_c($1, NULL, $4, locloc(@$));}
  7380 /* ERROR_CHECK_BEGIN */
  7528 /* ERROR_CHECK_BEGIN */
  7381 | error il_operand
  7529 | error il_operand
  7382   {$$ = NULL;
  7530   {$$ = NULL;
  7383 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid operator in parameter assignment.");
  7531 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid operator in parameter assignment.");
  7384 	 yyerrok;
  7532 	 yyerrok;
  7385 	}
  7533 	}
  7386 | error '(' eol_list simple_instr_list ')'
  7534 | error '(' eol_list simple_instr_list ')'
  7387   {$$ = NULL;
  7535   {$$ = NULL;
  7388 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid operator in parameter assignment.");
  7536 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid operator in parameter assignment.");
  7389 	 yyerrok;
  7537 	 yyerrok;
  7390 	}
  7538 	}
  7391 | il_assign_operator error
  7539 | il_assign_operator error
  7392   {$$ = NULL;
  7540   {$$ = NULL;
  7393 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid operand defined in parameter assignment.");
  7541 	 print_err_msg(current_filename, locl(@1), locf(@2), "invalid operand defined in parameter assignment.");
  7394 	 yyerrok;
  7542 	 yyerrok;
  7395 	}
  7543 	}
  7396 | il_assign_operator '(' ')'
  7544 | il_assign_operator '(' eol_list ')'
  7397   {$$ = NULL;
  7545   {$$ = NULL;
  7398 	 print_err_msg(current_filename, locf(@1), locl(@1), "no instruction list defined in parameter assignment.");
  7546 	 yynerrs++;
  7399 	 yyerrok;
  7547 	 print_err_msg(current_filename, locl(@3), locf(@4), "no instruction list defined in parameter assignment.");
  7400 	}
  7548 	}
  7401 | il_assign_operator '(' error ')'
  7549 | il_assign_operator '(' eol_list error ')'
  7402   {$$ = NULL;
  7550   {$$ = NULL;
  7403 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid instruction list defined in parameter assignment.");
  7551 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid instruction list defined in parameter assignment.");
  7404 	 yyerrok;
  7552 	 yyerrok;
  7405 	}
  7553 	}
  7406 | il_assign_operator '(' eol_list simple_instr_list error
  7554 | il_assign_operator '(' eol_list simple_instr_list error
  7407   {$$ = NULL;
  7555   {$$ = NULL;
  7408 	 print_err_msg(current_filename, locf(@1), locl(@1), "')' missing at the end of instruction list defined in parameter assignment.");
  7556 	 print_err_msg(current_filename, locl(@4), locf(@5), "')' missing at the end of instruction list defined in parameter assignment.");
  7409 	 yyerrok;
  7557 	 yyerrok;
  7410 	}
  7558 	}
  7411 /* ERROR_CHECK_END */
  7559 /* ERROR_CHECK_END */
  7412 ;
  7560 ;
  7413 
  7561 
  7416   il_assign_out_operator variable
  7564   il_assign_out_operator variable
  7417 	{$$ = new il_param_out_assignment_c($1, $2, locloc(@$));}
  7565 	{$$ = new il_param_out_assignment_c($1, $2, locloc(@$));}
  7418 /* ERROR_CHECK_BEGIN */
  7566 /* ERROR_CHECK_BEGIN */
  7419 | il_assign_out_operator error
  7567 | il_assign_out_operator error
  7420   {$$ = NULL;
  7568   {$$ = NULL;
  7421 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid variable defined in parameter out assignment.");
  7569 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid variable defined in parameter out assignment.");
  7422 	 yyerrok;
  7570 	 yyerrok;
  7423 	}
  7571 	}
  7424 /* ERROR_CHECK_END */
  7572 /* ERROR_CHECK_END */
  7425 ;
  7573 ;
  7426 
  7574 
  7563 /*  variable_name ASSIGN */
  7711 /*  variable_name ASSIGN */
  7564   any_identifier ASSIGN
  7712   any_identifier ASSIGN
  7565 /* ERROR_CHECK_BEGIN */
  7713 /* ERROR_CHECK_BEGIN */
  7566 | error ASSIGN
  7714 | error ASSIGN
  7567   {$$ = NULL;
  7715   {$$ = NULL;
  7568 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter defined in parameter assignment.");
  7716 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid parameter defined in parameter assignment.");
  7569 	 yyerrok;
  7717 	 yyerrok;
  7570 	}
  7718 	}
  7571 /* ERROR_CHECK_END */
  7719 /* ERROR_CHECK_END */
  7572 ;
  7720 ;
  7573 
  7721 
  7581 | NOT sendto_identifier SENDTO
  7729 | NOT sendto_identifier SENDTO
  7582 	{$$ = new il_assign_out_operator_c(new not_paramassign_c(locloc(@1)), $2, locloc(@$));}
  7730 	{$$ = new il_assign_out_operator_c(new not_paramassign_c(locloc(@1)), $2, locloc(@$));}
  7583 /* ERROR_CHECK_BEGIN */
  7731 /* ERROR_CHECK_BEGIN */
  7584 | error SENDTO
  7732 | error SENDTO
  7585   {$$ = NULL;
  7733   {$$ = NULL;
       
  7734 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid parameter defined in parameter out assignment.");
       
  7735 	 yyerrok;
       
  7736 	}
       
  7737 | NOT SENDTO
       
  7738   {$$ = NULL;
       
  7739 	 yynerrs++;
       
  7740 	 print_err_msg(current_filename, locl(@1), locf(@2), "no parameter defined in parameter out assignment.");
       
  7741 	}
       
  7742 | NOT error SENDTO
       
  7743   {$$ = NULL;
  7586 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter defined in parameter out assignment.");
  7744 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter defined in parameter out assignment.");
  7587 	 yyerrok;
       
  7588 	}
       
  7589 | NOT SENDTO
       
  7590   {$$ = NULL;
       
  7591 	 yynerrs++;
       
  7592 	 print_err_msg(current_filename, locf(@1), locl(@2), "no paramter defined in parameter out assignment.");
       
  7593 	}
       
  7594 | NOT error SENDTO
       
  7595   {$$ = NULL;
       
  7596 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid parameter defined in parameter out assignment.");
       
  7597 	 yyerrok;
  7745 	 yyerrok;
  7598 	}
  7746 	}
  7599 /* ERROR_CHECK_END */
  7747 /* ERROR_CHECK_END */
  7600 ;
  7748 ;
  7601 
  7749 
  7629 | expression OR xor_expression
  7777 | expression OR xor_expression
  7630 	{$$ = new or_expression_c($1, $3, locloc(@$));}
  7778 	{$$ = new or_expression_c($1, $3, locloc(@$));}
  7631 /* ERROR_CHECK_BEGIN */
  7779 /* ERROR_CHECK_BEGIN */
  7632 | expression OR error
  7780 | expression OR error
  7633   {$$ = NULL;
  7781   {$$ = NULL;
  7634 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after 'OR' in ST expression.");
  7782 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after 'OR' in ST expression.");
  7635 	 yyerrok;
  7783 	 yyerrok;
  7636 	}
  7784 	}
  7637 /* ERROR_CHECK_END */
  7785 /* ERROR_CHECK_END */
  7638 ;
  7786 ;
  7639 
  7787 
  7642 | xor_expression XOR and_expression
  7790 | xor_expression XOR and_expression
  7643 	{$$ = new xor_expression_c($1, $3, locloc(@$));}
  7791 	{$$ = new xor_expression_c($1, $3, locloc(@$));}
  7644 /* ERROR_CHECK_BEGIN */
  7792 /* ERROR_CHECK_BEGIN */
  7645 | xor_expression XOR error
  7793 | xor_expression XOR error
  7646   {$$ = NULL;
  7794   {$$ = NULL;
  7647 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after 'XOR' in ST expression.");
  7795 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after 'XOR' in ST expression.");
  7648 	 yyerrok;
  7796 	 yyerrok;
  7649 	}
  7797 	}
  7650 /* ERROR_CHECK_END */
  7798 /* ERROR_CHECK_END */
  7651 ;
  7799 ;
  7652 
  7800 
  7666 | and_expression AND2 comparison
  7814 | and_expression AND2 comparison
  7667 	{$$ = new and_expression_c($1, $3, locloc(@$));}
  7815 	{$$ = new and_expression_c($1, $3, locloc(@$));}
  7668 /* ERROR_CHECK_BEGIN */
  7816 /* ERROR_CHECK_BEGIN */
  7669 | and_expression '&' error
  7817 | and_expression '&' error
  7670   {$$ = NULL;
  7818   {$$ = NULL;
  7671 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '&' in ST expression.");
  7819 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '&' in ST expression.");
  7672 	 yyerrok;
  7820 	 yyerrok;
  7673 	}
  7821 	}
  7674 | and_expression AND error
  7822 | and_expression AND error
  7675   {$$ = NULL;
  7823   {$$ = NULL;
  7676 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after 'AND' in ST expression.");
  7824 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after 'AND' in ST expression.");
  7677 	 yyerrok;
  7825 	 yyerrok;
  7678 	}
  7826 	}
  7679 | and_expression AND2 error
  7827 | and_expression AND2 error
  7680   {$$ = NULL;
  7828   {$$ = NULL;
  7681 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '&' in ST expression.");
  7829 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '&' in ST expression.");
  7682 	 yyerrok;
  7830 	 yyerrok;
  7683 	}
  7831 	}
  7684 /* ERROR_CHECK_END */
  7832 /* ERROR_CHECK_END */
  7685 ;
  7833 ;
  7686 
  7834 
  7691 | comparison OPER_NE equ_expression
  7839 | comparison OPER_NE equ_expression
  7692 	{$$ = new notequ_expression_c($1, $3, locloc(@$));}
  7840 	{$$ = new notequ_expression_c($1, $3, locloc(@$));}
  7693 /* ERROR_CHECK_BEGIN */
  7841 /* ERROR_CHECK_BEGIN */
  7694 | comparison '=' error
  7842 | comparison '=' error
  7695   {$$ = NULL;
  7843   {$$ = NULL;
  7696 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '=' in ST expression.");
  7844 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '=' in ST expression.");
  7697 	 yyerrok;
  7845 	 yyerrok;
  7698 	}
  7846 	}
  7699 | comparison OPER_NE error
  7847 | comparison OPER_NE error
  7700   {$$ = NULL;
  7848   {$$ = NULL;
  7701 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '<>' in ST expression.");
  7849 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '<>' in ST expression.");
  7702 	 yyerrok;
  7850 	 yyerrok;
  7703 	}
  7851 	}
  7704 /* ERROR_CHECK_END */
  7852 /* ERROR_CHECK_END */
  7705 ;
  7853 ;
  7706 
  7854 
  7715 | equ_expression OPER_GE add_expression
  7863 | equ_expression OPER_GE add_expression
  7716 	{$$ = new ge_expression_c($1, $3, locloc(@$));}
  7864 	{$$ = new ge_expression_c($1, $3, locloc(@$));}
  7717 /* ERROR_CHECK_BEGIN */
  7865 /* ERROR_CHECK_BEGIN */
  7718 | equ_expression '<' error
  7866 | equ_expression '<' error
  7719   {$$ = NULL;
  7867   {$$ = NULL;
  7720 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '<' in ST expression.");
  7868 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '<' in ST expression.");
  7721 	 yyerrok;
  7869 	 yyerrok;
  7722 	}
  7870 	}
  7723 | equ_expression '>' error
  7871 | equ_expression '>' error
  7724   {$$ = NULL;
  7872   {$$ = NULL;
  7725 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '>' in ST expression.");
  7873 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '>' in ST expression.");
  7726 	 yyerrok;
  7874 	 yyerrok;
  7727 	}
  7875 	}
  7728 | equ_expression OPER_LE error
  7876 | equ_expression OPER_LE error
  7729   {$$ = NULL;
  7877   {$$ = NULL;
  7730 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '<=' in ST expression.");
  7878 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '<=' in ST expression.");
  7731 	 yyerrok;
  7879 	 yyerrok;
  7732 	}
  7880 	}
  7733 | equ_expression OPER_GE error
  7881 | equ_expression OPER_GE error
  7734   {$$ = NULL;
  7882   {$$ = NULL;
  7735 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '>=' in ST expression.");
  7883 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '>=' in ST expression.");
  7736 	 yyerrok;
  7884 	 yyerrok;
  7737 	}
  7885 	}
  7738 /* ERROR_CHECK_END */
  7886 /* ERROR_CHECK_END */
  7739 ;
  7887 ;
  7740 
  7888 
  7749 | add_expression '-' term
  7897 | add_expression '-' term
  7750 	{$$ = new sub_expression_c($1, $3, locloc(@$));}
  7898 	{$$ = new sub_expression_c($1, $3, locloc(@$));}
  7751 /* ERROR_CHECK_BEGIN */
  7899 /* ERROR_CHECK_BEGIN */
  7752 | add_expression '+' error
  7900 | add_expression '+' error
  7753   {$$ = NULL;
  7901   {$$ = NULL;
  7754 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '+' in ST expression.");
  7902 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '+' in ST expression.");
  7755 	 yyerrok;
  7903 	 yyerrok;
  7756 	}
  7904 	}
  7757 | add_expression '-' error
  7905 | add_expression '-' error
  7758   {$$ = NULL;
  7906   {$$ = NULL;
  7759 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '-' in ST expression.");
  7907 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '-' in ST expression.");
  7760 	 yyerrok;
  7908 	 yyerrok;
  7761 	}
  7909 	}
  7762 /* ERROR_CHECK_END */
  7910 /* ERROR_CHECK_END */
  7763 ;
  7911 ;
  7764 
  7912 
  7775 | term MOD power_expression
  7923 | term MOD power_expression
  7776 	{$$ = new mod_expression_c($1, $3, locloc(@$));}
  7924 	{$$ = new mod_expression_c($1, $3, locloc(@$));}
  7777 /* ERROR_CHECK_BEGIN */
  7925 /* ERROR_CHECK_BEGIN */
  7778 | term '*' error
  7926 | term '*' error
  7779   {$$ = NULL;
  7927   {$$ = NULL;
  7780 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '*' in ST expression.");
  7928 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '*' in ST expression.");
  7781 	 yyerrok;
  7929 	 yyerrok;
  7782 	}
  7930 	}
  7783 | term '/' error
  7931 | term '/' error
  7784   {$$ = NULL;
  7932   {$$ = NULL;
  7785 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '/' in ST expression.");
  7933 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '/' in ST expression.");
  7786 	 yyerrok;
  7934 	 yyerrok;
  7787 	}
  7935 	}
  7788 | term MOD error
  7936 | term MOD error
  7789   {$$ = NULL;
  7937   {$$ = NULL;
  7790 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after 'MOD' in ST expression.");
  7938 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after 'MOD' in ST expression.");
  7791 	 yyerrok;
  7939 	 yyerrok;
  7792 	}
  7940 	}
  7793 /* ERROR_CHECK_END */
  7941 /* ERROR_CHECK_END */
  7794 ;
  7942 ;
  7795 
  7943 
  7802 | power_expression OPER_EXP unary_expression
  7950 | power_expression OPER_EXP unary_expression
  7803 	{$$ = new power_expression_c($1, $3, locloc(@$));}
  7951 	{$$ = new power_expression_c($1, $3, locloc(@$));}
  7804 /* ERROR_CHECK_BEGIN */
  7952 /* ERROR_CHECK_BEGIN */
  7805 | power_expression OPER_EXP error
  7953 | power_expression OPER_EXP error
  7806   {$$ = NULL;
  7954   {$$ = NULL;
  7807 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '**' in ST expression.");
  7955 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after '**' in ST expression.");
  7808 	 yyerrok;
  7956 	 yyerrok;
  7809 	}
  7957 	}
  7810 /* ERROR_CHECK_END */
  7958 /* ERROR_CHECK_END */
  7811 ;
  7959 ;
  7812 
  7960 
  7818 | NOT primary_expression
  7966 | NOT primary_expression
  7819 	{$$ = new not_expression_c($2, locloc(@$));}
  7967 	{$$ = new not_expression_c($2, locloc(@$));}
  7820 /* ERROR_CHECK_BEGIN */
  7968 /* ERROR_CHECK_BEGIN */
  7821 | '-' error
  7969 | '-' error
  7822   {$$ = NULL;
  7970   {$$ = NULL;
  7823 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid expression after '-' in ST expression.");
  7971 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after '-' in ST expression.");
  7824 	 yyerrok;
  7972 	 yyerrok;
  7825 	}
  7973 	}
  7826 | NOT error
  7974 | NOT error
  7827   {$$ = NULL;
  7975   {$$ = NULL;
  7828 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid expression after 'NOT' in ST expression.");
  7976 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid expression after 'NOT' in ST expression.");
  7829 	 yyerrok;
  7977 	 yyerrok;
  7830 	}
  7978 	}
  7831 /* ERROR_CHECK_END */
  7979 /* ERROR_CHECK_END */
  7832 ;
  7980 ;
  7833 
  7981 
  7869 	{$$ = $2;}
  8017 	{$$ = $2;}
  7870 |  function_invocation
  8018 |  function_invocation
  7871 /* ERROR_CHECK_BEGIN */
  8019 /* ERROR_CHECK_BEGIN */
  7872 | '(' expression error
  8020 | '(' expression error
  7873   {$$ = NULL;
  8021   {$$ = NULL;
  7874 	 print_err_msg(current_filename, locf(@2), locl(@2), "')' missing at the end of expression in ST expression.");
  8022 	 print_err_msg(current_filename, locl(@2), locf(@3), "')' missing at the end of expression in ST expression.");
  7875 	 yyerrok;
  8023 	 yyerrok;
  7876 	}
  8024 	}
  7877 /* ERROR_CHECK_END */
  8025 /* ERROR_CHECK_END */
  7878 ;
  8026 ;
  7879 
  8027 
  7912 	{$$ = new function_invocation_c($1, $3, locloc(@$));}
  8060 	{$$ = new function_invocation_c($1, $3, locloc(@$));}
  7913 /* ERROR_CHECK_BEGIN */ 
  8061 /* ERROR_CHECK_BEGIN */ 
  7914 | function_name_no_NOT_clashes param_assignment_formal_list ')'
  8062 | function_name_no_NOT_clashes param_assignment_formal_list ')'
  7915   {$$ = NULL;
  8063   {$$ = NULL;
  7916 	 yynerrs++;
  8064 	 yynerrs++;
  7917 	 print_err_msg(current_filename, locf(@1), locl(@2), "'(' missing after function name in ST expression.");
  8065 	 print_err_msg(current_filename, locl(@1), locf(@2), "'(' missing after function name in ST expression.");
  7918 	}
  8066 	}
  7919 | function_name_no_NOT_clashes error param_assignment_formal_list ')'
  8067 | function_name_no_NOT_clashes error param_assignment_formal_list ')'
  7920   {$$ = NULL;
  8068   {$$ = NULL;
  7921 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '(' after function name in ST expression.");
  8069 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '(' after function name in ST expression.");
  7922 	 yyerrok;
  8070 	 yyerrok;
  7923 	}
  8071 	}
  7924 | function_name_no_NOT_clashes error param_assignment_nonformal_list ')'
  8072 | function_name_no_NOT_clashes error param_assignment_nonformal_list ')'
  7925   {$$ = NULL;
  8073   {$$ = NULL;
  7926 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting '(' after function name in ST expression.");
  8074 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '(' after function name in ST expression.");
  7927 	 yyerrok;
  8075 	 yyerrok;
  7928 	}
  8076 	}
  7929 | function_name_no_NOT_clashes '(' ')'
  8077 | function_name_no_NOT_clashes '(' ')'
  7930   {$$ = NULL;
  8078   {$$ = NULL;
  7931 	 yynerrs++;
  8079 	 yynerrs++;
  7932 	 print_err_msg(current_filename, locf(@1), locl(@3), "no parameter defined in function invocation of ST expression.");
  8080 	 print_err_msg(current_filename, locl(@2), locf(@3), "no parameter defined in function invocation of ST expression.");
  7933 	}
  8081 	}
  7934 | function_name_no_NOT_clashes '(' error ')'
  8082 | function_name_no_NOT_clashes '(' error ')'
  7935   {$$ = NULL;
  8083   {$$ = NULL;
  7936 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid parameter(s) defined in function invocation of ST expression.");
  8084 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid parameter(s) defined in function invocation of ST expression.");
  7937 	 yyerrok;
  8085 	 yyerrok;
  7938 	}
  8086 	}
  7939 | function_name_no_NOT_clashes '(' param_assignment_formal_list error
  8087 | function_name_no_NOT_clashes '(' param_assignment_formal_list error
  7940   {$$ = NULL;
  8088   {$$ = NULL;
  7941 	 print_err_msg(current_filename, locf(@1), locl(@3), "')' missing at the end of function invocation in ST expression.");
  8089 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing at the end of function invocation in ST expression.");
  7942 	 yyerrok;
  8090 	 yyerrok;
  7943 	}
  8091 	}
  7944 | function_name_no_NOT_clashes '(' param_assignment_nonformal_list error
  8092 | function_name_no_NOT_clashes '(' param_assignment_nonformal_list error
  7945   {$$ = NULL;
  8093   {$$ = NULL;
  7946 	 print_err_msg(current_filename, locf(@1), locl(@3), "')' missing at the end of function invocation in ST expression.");
  8094 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing at the end of function invocation in ST expression.");
  7947 	 yyerrok;
  8095 	 yyerrok;
  7948 	}
  8096 	}
  7949 /* ERROR_CHECK_END */
  8097 /* ERROR_CHECK_END */
  7950 ;
  8098 ;
  7951 
  8099 
  7962 	{$$ = $1; $$->add_element($2);}
  8110 	{$$ = $1; $$->add_element($2);}
  7963 | statement_list pragma
  8111 | statement_list pragma
  7964 	{$$ = $1; $$->add_element($2);}
  8112 	{$$ = $1; $$->add_element($2);}
  7965 /* ERROR_CHECK_BEGIN */
  8113 /* ERROR_CHECK_BEGIN */
  7966 | statement error
  8114 | statement error
  7967 	{$$ = NULL;
  8115 	{$$ = new statement_list_c(locloc(@$));
  7968 	 print_err_msg(current_filename, locf(@1), locl(@1), "';' missing at the end of statement in ST statement.");
  8116 	 print_err_msg(current_filename, locl(@1), locf(@2), "';' missing at the end of statement in ST statement.");
  7969 	 yyerrok;
  8117 	 yyerrok;
  7970 	}
  8118 	}
  7971 | statement_list statement error
  8119 | statement_list statement error
  7972 	{$$ = NULL;
  8120 	{$$ = $1;
  7973 	 print_err_msg(current_filename, locf(@2), locl(@2), "';' missing at the end of statement in ST statement.");
  8121 	 print_err_msg(current_filename, locl(@2), locf(@3), "';' missing at the end of statement in ST statement.");
  7974 	 yyerrok;
  8122 	 yyerrok;
  7975 	}
  8123 	}
  7976 | statement_list error ';'
  8124 | statement_list error ';'
  7977 	{$$ = NULL;
  8125 	{$$ = $1;
  7978 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid statement in ST statement.");
  8126 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid statement in ST statement.");
  7979 	 yyerrok;
  8127 	 yyerrok;
  7980 	}
  8128 	}
  7981 | statement_list ';'
  8129 | statement_list ';'
  7982 	{$$ = NULL;
  8130 	{$$ = $1;
       
  8131 	 yynerrs++;
  7983 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after statement in ST statement.");
  8132 	 print_err_msg(current_filename, locf(@2), locl(@2), "unexpected ';' after statement in ST statement.");
  7984 	 yyerrok;
       
  7985 	}
  8133 	}
  7986 /* ERROR_CHECK_END */
  8134 /* ERROR_CHECK_END */
  7987 ;
  8135 ;
  7988 
  8136 
  7989 
  8137 
  8002   variable ASSIGN expression
  8150   variable ASSIGN expression
  8003 	{$$ = new assignment_statement_c($1, $3, locloc(@$));}
  8151 	{$$ = new assignment_statement_c($1, $3, locloc(@$));}
  8004 /* ERROR_CHECK_BEGIN */
  8152 /* ERROR_CHECK_BEGIN */
  8005 | variable ASSIGN error
  8153 | variable ASSIGN error
  8006 	{$$ = NULL;
  8154 	{$$ = NULL;
  8007 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid expression after ':=' in ST assignment statement.");
  8155 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression after ':=' in ST assignment statement.");
  8008 	 yyerrok;
  8156 	 yyerrok;
  8009 	}
  8157 	}
  8010 /* ERROR_CHECK_END */
  8158 /* ERROR_CHECK_END */
  8011 ;
  8159 ;
  8012 
  8160 
  8037 	{$$ = new fb_invocation_c($1, $3, locloc(@$));}
  8185 	{$$ = new fb_invocation_c($1, $3, locloc(@$));}
  8038 /* ERROR_CHECK_BEGIN */
  8186 /* ERROR_CHECK_BEGIN */
  8039 | prev_declared_fb_name ')'
  8187 | prev_declared_fb_name ')'
  8040 	{$$ = NULL;
  8188 	{$$ = NULL;
  8041 	 yynerrs++;
  8189 	 yynerrs++;
  8042 	 print_err_msg(current_filename, locf(@1), locl(@1), "'(' missing after function block name in ST statement.");
  8190 	 print_err_msg(current_filename, locl(@1), locf(@2), "'(' missing after function block name in ST statement.");
  8043 	}
  8191 	}
  8044 | prev_declared_fb_name param_assignment_formal_list ')'
  8192 | prev_declared_fb_name param_assignment_formal_list ')'
  8045 	{$$ = NULL;
  8193 	{$$ = NULL;
  8046 	 yynerrs++;
  8194 	 yynerrs++;
  8047 	 print_err_msg(current_filename, locf(@1), locl(@1), "'(' missing after function block name in ST statement.");
  8195 	 print_err_msg(current_filename, locl(@1), locf(@2), "'(' missing after function block name in ST statement.");
  8048 	}
  8196 	}
  8049 | prev_declared_fb_name error ')'
  8197 | prev_declared_fb_name error ')'
  8050 	{$$ = NULL;
  8198 	{$$ = NULL;
  8051 	 print_err_msg(current_filename, locf(@1), locl(@1), "expecting '(' after function block name in ST statement.");
  8199 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '(' after function block name in ST statement.");
  8052 	 yyerrok;
  8200 	 yyerrok;
  8053 	}
  8201 	}
  8054 | prev_declared_fb_name error param_assignment_formal_list ')'
  8202 | prev_declared_fb_name error param_assignment_formal_list ')'
  8055 	{$$ = NULL;
  8203 	{$$ = NULL;
  8056 	 print_err_msg(current_filename, locf(@1), locl(@1), "expecting '(' after function block name in ST statement.");
  8204 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '(' after function block name in ST statement.");
  8057 	 yyerrok;
  8205 	 yyerrok;
  8058 	}
  8206 	}
  8059 | prev_declared_fb_name error param_assignment_nonformal_list ')'
  8207 | prev_declared_fb_name error param_assignment_nonformal_list ')'
  8060 	{$$ = NULL;
  8208 	{$$ = NULL;
  8061 	 print_err_msg(current_filename, locf(@1), locl(@1), "expecting '(' after function block name in ST statement.");
  8209 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting '(' after function block name in ST statement.");
  8062 	 yyerrok;
  8210 	 yyerrok;
  8063 	}
  8211 	}
  8064 | prev_declared_fb_name '(' error ')'
  8212 | prev_declared_fb_name '(' error ')'
  8065 	{$$ = NULL;
  8213 	{$$ = NULL;
  8066 	 print_err_msg(current_filename, locf(@1), locl(@1), "invalid parameter list in function block invocation in ST statement.");
  8214 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid parameter list in function block invocation in ST statement.");
  8067 	 yyerrok;
  8215 	 yyerrok;
  8068 	}
  8216 	}
  8069 | prev_declared_fb_name '(' error
  8217 | prev_declared_fb_name '(' error
  8070 	{$$ = NULL;
  8218 	{$$ = NULL;
  8071 	 print_err_msg(current_filename, locf(@1), locl(@1), "')' missing after parameter list of function block invocation in ST statement.");
  8219 	 print_err_msg(current_filename, locl(@2), locf(@3), "')' missing after parameter list of function block invocation in ST statement.");
  8072 	 yyerrok;
  8220 	 yyerrok;
  8073 	}
  8221 	}
  8074 | prev_declared_fb_name '(' param_assignment_formal_list error
  8222 | prev_declared_fb_name '(' param_assignment_formal_list error
  8075 	{$$ = NULL;
  8223 	{$$ = NULL;
  8076 	 print_err_msg(current_filename, locf(@1), locl(@1), "')' missing after parameter list of function block invocation in ST statement.");
  8224 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing after parameter list of function block invocation in ST statement.");
  8077 	 yyerrok;
  8225 	 yyerrok;
  8078 	}
  8226 	}
  8079 | prev_declared_fb_name '(' param_assignment_nonformal_list error
  8227 | prev_declared_fb_name '(' param_assignment_nonformal_list error
  8080 	{$$ = NULL;
  8228 	{$$ = NULL;
  8081 	 print_err_msg(current_filename, locf(@1), locl(@1), "')' missing after parameter list of function block invocation in ST statement.");
  8229 	 print_err_msg(current_filename, locl(@3), locf(@4), "')' missing after parameter list of function block invocation in ST statement.");
  8082 	 yyerrok;
  8230 	 yyerrok;
  8083 	}
  8231 	}
  8084 /* ERROR_CHECK_END */
  8232 /* ERROR_CHECK_END */
  8085 ;
  8233 ;
  8086 
  8234 
  8094 	{$$ = new param_assignment_list_c(locloc(@$)); $$->add_element($1);}
  8242 	{$$ = new param_assignment_list_c(locloc(@$)); $$->add_element($1);}
  8095 | param_assignment_formal_list ',' param_assignment_formal
  8243 | param_assignment_formal_list ',' param_assignment_formal
  8096 	{$$ = $1; $$->add_element($3);}
  8244 	{$$ = $1; $$->add_element($3);}
  8097 /* ERROR_CHECK_BEGIN */
  8245 /* ERROR_CHECK_BEGIN */
  8098 | param_assignment_formal_list error param_assignment_formal
  8246 | param_assignment_formal_list error param_assignment_formal
  8099   {$$ = NULL;
  8247   {$$ = $1;
  8100 	 print_err_msg(current_filename, locf(@1), locl(@3), "expecting ',' in ST parameter assignment list.");
  8248 	 print_err_msg(current_filename, locf(@2), locl(@2), "expecting ',' in ST parameter assignment list.");
  8101 	 yyerrok;
  8249 	 yyerrok;
  8102 	}
  8250 	}
  8103 | param_assignment_formal_list ',' error
  8251 | param_assignment_formal_list ',' error
  8104   {$$ = NULL;
  8252   {$$ = $1;
  8105 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter assignment in ST parameter assignment list.");
  8253 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid parameter assignment in ST parameter assignment list.");
  8106 	 yyerrok;
  8254 	 yyerrok;
  8107 	}
  8255 	}
  8108 /* ERROR_CHECK_END */
  8256 /* ERROR_CHECK_END */
  8109 ;
  8257 ;
  8110 
  8258 
  8117 	{$$ = new param_assignment_list_c(locloc(@$)); $$->add_element($1);}
  8265 	{$$ = new param_assignment_list_c(locloc(@$)); $$->add_element($1);}
  8118 | param_assignment_nonformal_list ',' param_assignment_nonformal
  8266 | param_assignment_nonformal_list ',' param_assignment_nonformal
  8119 	{$$ = $1; $$->add_element($3);}
  8267 	{$$ = $1; $$->add_element($3);}
  8120 /* ERROR_CHECK_BEGIN */
  8268 /* ERROR_CHECK_BEGIN */
  8121 | param_assignment_nonformal_list ',' error
  8269 | param_assignment_nonformal_list ',' error
  8122   {$$ = NULL;
  8270   {$$ = $1;
  8123 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid parameter assignment in ST parameter assignment list.");
  8271 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid parameter assignment in ST parameter assignment list.");
  8124 	 yyerrok;
  8272 	 yyerrok;
  8125 	}
  8273 	}
  8126 /* ERROR_CHECK_END */
  8274 /* ERROR_CHECK_END */
  8127 ;
  8275 ;
  8128 
  8276 
  8171 | NOT sendto_identifier SENDTO variable
  8319 | NOT sendto_identifier SENDTO variable
  8172 	{$$ = new output_variable_param_assignment_c(new not_paramassign_c(locloc(@$)),$2, $4, locloc(@$));}
  8320 	{$$ = new output_variable_param_assignment_c(new not_paramassign_c(locloc(@$)),$2, $4, locloc(@$));}
  8173 /* ERROR_CHECK_BEGIN */
  8321 /* ERROR_CHECK_BEGIN */
  8174 | any_identifier ASSIGN error
  8322 | any_identifier ASSIGN error
  8175   {$$ = NULL;
  8323   {$$ = NULL;
  8176 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid expression in ST formal parameter assignment.");
  8324 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression in ST formal parameter assignment.");
  8177 	 yyerrok;
  8325 	 yyerrok;
  8178 	} 
  8326 	} 
  8179 | sendto_identifier SENDTO error
  8327 | sendto_identifier SENDTO error
  8180   {$$ = NULL;
  8328   {$$ = NULL;
  8181 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid expression in ST formal parameter out assignment.");
  8329 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid expression in ST formal parameter out assignment.");
  8182 	 yyerrok;
  8330 	 yyerrok;
  8183 	}
  8331 	}
  8184 | NOT SENDTO variable
  8332 | NOT SENDTO variable
  8185   {$$ = NULL;
  8333   {$$ = NULL;
  8186 	 yynerrs++;
  8334 	 yynerrs++;
  8187 	 print_err_msg(current_filename, locf(@1), locl(@2), "no parameter name defined in ST formal parameter out negated assignment.");
  8335 	 print_err_msg(current_filename, locl(@1), locf(@2), "no parameter name defined in ST formal parameter out negated assignment.");
  8188 	}
  8336 	}
  8189 | NOT error SENDTO variable
  8337 | NOT error SENDTO variable
  8190   {$$ = NULL;
  8338   {$$ = NULL;
  8191 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid parameter name defined in ST formal parameter out negated assignment.");
  8339 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid parameter name defined in ST formal parameter out negated assignment.");
  8192 	 yyerrok;
  8340 	 yyerrok;
  8193 	}
  8341 	}
  8194 | NOT sendto_identifier SENDTO error
  8342 | NOT sendto_identifier SENDTO error
  8195   {$$ = NULL;
  8343   {$$ = NULL;
  8196 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid expression in ST formal parameter out negated assignment.");
  8344 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid expression in ST formal parameter out negated assignment.");
  8197 	 yyerrok;
  8345 	 yyerrok;
  8198 	}
  8346 	}
  8199 /* ERROR_CHECK_END */
  8347 /* ERROR_CHECK_END */
  8200 ;
  8348 ;
  8201 
  8349 
  8219 	{$$ = new if_statement_c($2, $4, $5, $7, locloc(@$));}
  8367 	{$$ = new if_statement_c($2, $4, $5, $7, locloc(@$));}
  8220 /* ERROR_CHECK_BEGIN */
  8368 /* ERROR_CHECK_BEGIN */
  8221 | IF THEN statement_list elseif_statement_list END_IF
  8369 | IF THEN statement_list elseif_statement_list END_IF
  8222   {$$ = NULL;
  8370   {$$ = NULL;
  8223 	 yynerrs++;
  8371 	 yynerrs++;
  8224 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined in ST 'IF' statement.");
  8372 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined in ST 'IF' statement.");
  8225 	}
  8373 	}
  8226 | IF THEN statement_list elseif_statement_list ELSE statement_list END_IF
  8374 | IF THEN statement_list elseif_statement_list ELSE statement_list END_IF
  8227   {$$ = NULL;
  8375   {$$ = NULL;
  8228 	 yynerrs++;
  8376 	 yynerrs++;
  8229 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined in ST 'IF' statement.");
  8377 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined in ST 'IF' statement.");
  8230 	}
  8378 	}
  8231 | IF error THEN statement_list elseif_statement_list END_IF
  8379 | IF error THEN statement_list elseif_statement_list END_IF
  8232   {$$ = NULL;
  8380   {$$ = NULL;
  8233 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for ST 'IF' statement.");
  8381 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for ST 'IF' statement.");
  8234 	 yyerrok;
  8382 	 yyerrok;
  8235 	}
  8383 	}
  8236 | IF error THEN statement_list elseif_statement_list ELSE statement_list END_IF
  8384 | IF error THEN statement_list elseif_statement_list ELSE statement_list END_IF
  8237   {$$ = NULL;
  8385   {$$ = NULL;
  8238 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for ST 'IF' statement.");
  8386 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for ST 'IF' statement.");
  8239 	 yyerrok;
  8387 	 yyerrok;
  8240 	}
  8388 	}
  8241 | IF expression error statement_list elseif_statement_list END_IF
  8389 | IF expression error statement_list elseif_statement_list END_IF
  8242   {$$ = NULL;
  8390   {$$ = NULL;
  8243 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'THEN' after test expression in ST 'IF' statement.");
  8391 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'THEN' after test expression in ST 'IF' statement.");
  8244 	 yyerrok;
  8392 	 yyerrok;
  8245 	}
  8393 	}
  8246 | IF expression error statement_list elseif_statement_list ELSE statement_list END_IF
  8394 | IF expression error statement_list elseif_statement_list ELSE statement_list END_IF
  8247   {$$ = NULL;
  8395   {$$ = NULL;
  8248 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'THEN' after test expression in ST 'IF' statement.");
  8396 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'THEN' after test expression in ST 'IF' statement.");
  8249 	 yyerrok;
  8397 	 yyerrok;
  8250 	}
  8398 	}
  8251 | IF expression THEN elseif_statement_list END_IF
  8399 | IF expression THEN elseif_statement_list END_IF
  8252   {$$ = NULL;
  8400   {$$ = NULL;
  8253 	 yynerrs++;
  8401 	 yynerrs++;
  8254 	 print_err_msg(current_filename, locf(@3), locl(@4), "no statement defined after 'THEN' in ST 'IF' statement.");
  8402 	 print_err_msg(current_filename, locl(@3), locf(@4), "no statement defined after 'THEN' in ST 'IF' statement.");
  8255 	}
  8403 	}
  8256 | IF expression THEN elseif_statement_list ELSE statement_list END_IF
  8404 | IF expression THEN elseif_statement_list ELSE statement_list END_IF
  8257   {$$ = NULL;
  8405   {$$ = NULL;
  8258 	 yynerrs++;
  8406 	 yynerrs++;
  8259 	 print_err_msg(current_filename, locf(@3), locl(@4), "no statement defined after 'THEN' in ST 'IF' statement.");
  8407 	 print_err_msg(current_filename, locl(@3), locf(@4), "no statement defined after 'THEN' in ST 'IF' statement.");
  8260 	}
  8408 	}
  8261 | IF expression THEN statement_list elseif_statement_list ELSE END_IF
  8409 | IF expression THEN statement_list elseif_statement_list ELSE END_IF
  8262   {$$ = NULL;
  8410   {$$ = NULL;
  8263 	 yynerrs++;
  8411 	 yynerrs++;
  8264 	 print_err_msg(current_filename, locf(@6), locl(@7), "no statement defined after 'ELSE' in ST 'IF' statement.");
  8412 	 print_err_msg(current_filename, locl(@6), locf(@7), "no statement defined after 'ELSE' in ST 'IF' statement.");
  8265 	}
  8413 	}
  8266 | IF expression THEN statement_list elseif_statement_list ELSE error END_IF
  8414 | IF expression THEN statement_list elseif_statement_list ELSE error END_IF
  8267   {$$ = NULL;
  8415   {$$ = NULL;
  8268 	 print_err_msg(current_filename, locf(@6), locl(@8), "invalid statement defined after 'ELSE' in ST 'IF' statement.");
  8416 	 print_err_msg(current_filename, locf(@7), locl(@7), "invalid statement defined after 'ELSE' in ST 'IF' statement.");
  8269 	 yyerrok;
  8417 	 yyerrok;
  8270 	}
  8418 	}
  8271 | IF error END_IF
  8419 | IF error END_IF
  8272   {$$ = NULL;
  8420   {$$ = NULL;
  8273 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in ST 'IF' statement.");
  8421 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in ST 'IF' statement.");
  8274 	 yyerrok;
  8422 	 yyerrok;
  8275 	}
  8423 	}
  8276 /* ERROR_CHECK_END */
  8424 /* ERROR_CHECK_END */
  8277 ;
  8425 ;
  8278 
  8426 
  8290 	{$$ = new elseif_statement_c($2, $4, locloc(@$));}
  8438 	{$$ = new elseif_statement_c($2, $4, locloc(@$));}
  8291 /* ERROR_CHECK_BEGIN */
  8439 /* ERROR_CHECK_BEGIN */
  8292 | ELSIF THEN statement_list
  8440 | ELSIF THEN statement_list
  8293   {$$ = NULL;
  8441   {$$ = NULL;
  8294 	 yynerrs++;
  8442 	 yynerrs++;
  8295 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined for 'ELSEIF' statement in ST 'IF' statement.");
  8443 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined for 'ELSEIF' statement in ST 'IF' statement.");
  8296 	}
  8444 	}
  8297 | ELSIF error THEN statement_list
  8445 | ELSIF error THEN statement_list
  8298   {$$ = NULL;
  8446   {$$ = NULL;
  8299 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for 'ELSEIF' statement in ST 'IF' statement.");
  8447 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for 'ELSEIF' statement in ST 'IF' statement.");
  8300 	 yyerrok;
  8448 	 yyerrok;
  8301 	}
  8449 	}
  8302 | ELSIF expression error statement_list
  8450 | ELSIF expression error statement_list
  8303   {$$ = NULL;
  8451   {$$ = NULL;
  8304 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'THEN' after test expression in 'ELSEIF' statement of ST 'IF' statement.");
  8452 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'THEN' after test expression in 'ELSEIF' statement of ST 'IF' statement.");
  8305 	 yyerrok;
  8453 	 yyerrok;
  8306 	}
  8454 	}
  8307 | ELSIF expression THEN error
  8455 | ELSIF expression THEN error
  8308   {$$ = NULL;
  8456   {$$ = NULL;
  8309 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid statement list in 'ELSEIF' statement of ST 'IF' statement.");
  8457 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid statement list in 'ELSEIF' statement of ST 'IF' statement.");
  8310 	 yyerrok;
  8458 	 yyerrok;
  8311 	}
  8459 	}
  8312 /* ERROR_CHECK_END */
  8460 /* ERROR_CHECK_END */
  8313 ;
  8461 ;
  8314 
  8462 
  8320 	{$$ = new case_statement_c($2, $4, $6, locloc(@$));}
  8468 	{$$ = new case_statement_c($2, $4, $6, locloc(@$));}
  8321 /* ERROR_CHECK_BEGIN */
  8469 /* ERROR_CHECK_BEGIN */
  8322 | CASE OF case_element_list END_CASE
  8470 | CASE OF case_element_list END_CASE
  8323   {$$ = NULL;
  8471   {$$ = NULL;
  8324 	 yynerrs++;
  8472 	 yynerrs++;
  8325 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined in ST 'CASE' statement.");
  8473 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined in ST 'CASE' statement.");
  8326 	}
  8474 	}
  8327 | CASE OF case_element_list ELSE statement_list END_CASE
  8475 | CASE OF case_element_list ELSE statement_list END_CASE
  8328   {$$ = NULL;
  8476   {$$ = NULL;
  8329 	 yynerrs++;
  8477 	 yynerrs++;
  8330 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined in ST 'CASE' statement.");
  8478 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined in ST 'CASE' statement.");
  8331 	}
  8479 	}
  8332 | CASE error OF case_element_list END_CASE
  8480 | CASE error OF case_element_list END_CASE
  8333   {$$ = NULL;
  8481   {$$ = NULL;
  8334 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for ST 'CASE' statement.");
  8482 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for ST 'CASE' statement.");
  8335 	 yyerrok;
  8483 	 yyerrok;
  8336 	}
  8484 	}
  8337 | CASE error OF case_element_list ELSE statement_list END_CASE
  8485 | CASE error OF case_element_list ELSE statement_list END_CASE
  8338   {$$ = NULL;
  8486   {$$ = NULL;
  8339 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for ST 'CASE' statement.");
  8487 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for ST 'CASE' statement.");
  8340 	 yyerrok;
  8488 	 yyerrok;
  8341 	}
  8489 	}
  8342 | CASE expression error case_element_list END_CASE
  8490 | CASE expression error case_element_list END_CASE
  8343   {$$ = NULL;
  8491   {$$ = NULL;
  8344 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'OF' after test expression in ST 'CASE' statement.");
  8492 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'OF' after test expression in ST 'CASE' statement.");
  8345 	 yyerrok;
  8493 	 yyerrok;
  8346 	}
  8494 	}
  8347 | CASE expression error case_element_list ELSE statement_list END_CASE
  8495 | CASE expression error case_element_list ELSE statement_list END_CASE
  8348   {$$ = NULL;
  8496   {$$ = NULL;
  8349 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'OF' after test expression in ST 'CASE' statement.");
  8497 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'OF' after test expression in ST 'CASE' statement.");
  8350 	 yyerrok;
  8498 	 yyerrok;
  8351 	}
  8499 	}
  8352 | CASE expression OF END_CASE
  8500 | CASE expression OF END_CASE
  8353   {$$ = NULL;
  8501   {$$ = NULL;
  8354 	 yynerrs++;
  8502 	 yynerrs++;
  8355 	 print_err_msg(current_filename, locf(@3), locl(@4), "no case element(s) defined after 'OF' in ST 'CASE' statement.");
  8503 	 print_err_msg(current_filename, locl(@3), locf(@4), "no case element(s) defined after 'OF' in ST 'CASE' statement.");
  8356 	}
  8504 	}
  8357 | CASE expression OF ELSE statement_list END_CASE
  8505 | CASE expression OF ELSE statement_list END_CASE
  8358   {$$ = NULL;
  8506   {$$ = NULL;
  8359 	 yynerrs++;
  8507 	 yynerrs++;
  8360 	 print_err_msg(current_filename, locf(@3), locl(@4), "no case element(s) defined after 'OF' in ST 'CASE' statement.");
  8508 	 print_err_msg(current_filename, locl(@3), locf(@4), "no case element(s) defined after 'OF' in ST 'CASE' statement.");
  8361 	}
  8509 	}
  8362 | CASE expression OF error END_CASE
  8510 | CASE expression OF error END_CASE
  8363   {$$ = NULL;
  8511   {$$ = NULL;
  8364 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid case element(s) defined after 'OF' in ST 'CASE' statement.");
  8512 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid case element(s) defined after 'OF' in ST 'CASE' statement.");
  8365 	 yyerrok;
  8513 	 yyerrok;
  8366 	}
  8514 	}
  8367 | CASE expression OF error ELSE statement_list END_CASE
  8515 | CASE expression OF error ELSE statement_list END_CASE
  8368   {$$ = NULL;
  8516   {$$ = NULL;
  8369 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid case element(s) defined after 'OF' in ST 'CASE' statement.");
  8517 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid case element(s) defined after 'OF' in ST 'CASE' statement.");
  8370 	 yyerrok;
  8518 	 yyerrok;
  8371 	}
  8519 	}
  8372 | CASE expression OF case_element_list ELSE END_CASE
  8520 | CASE expression OF case_element_list ELSE END_CASE
  8373   {$$ = NULL;
  8521   {$$ = NULL;
  8374 	 yynerrs++;
  8522 	 yynerrs++;
  8375 	 print_err_msg(current_filename, locf(@5), locl(@6), "no statement defined after 'ELSE' in ST 'CASE' statement.");
  8523 	 print_err_msg(current_filename, locl(@5), locf(@6), "no statement defined after 'ELSE' in ST 'CASE' statement.");
  8376 	}
  8524 	}
  8377 | CASE expression OF case_element_list ELSE error END_CASE
  8525 | CASE expression OF case_element_list ELSE error END_CASE
  8378   {$$ = NULL;
  8526   {$$ = NULL;
  8379 	 print_err_msg(current_filename, locf(@5), locl(@7), "invalid statement defined after 'ELSE' in ST 'CASE' statement.");
  8527 	 print_err_msg(current_filename, locf(@6), locl(@6), "invalid statement defined after 'ELSE' in ST 'CASE' statement.");
  8380 	 yyerrok;
  8528 	 yyerrok;
  8381 	}
  8529 	}
  8382 | CASE error END_CASE
  8530 | CASE error END_CASE
  8383   {$$ = NULL;
  8531   {$$ = NULL;
  8384 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in ST 'CASE' statement.");
  8532 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in ST 'CASE' statement.");
  8385 	 yyerrok;
  8533 	 yyerrok;
  8386 	}
  8534 	}
  8387 /* ERROR_CHECK_END */
  8535 /* ERROR_CHECK_END */
  8388 ;
  8536 ;
  8389 
  8537 
  8402 	{$$ = new case_element_c($1, $3, locloc(@$));}
  8550 	{$$ = new case_element_c($1, $3, locloc(@$));}
  8403 /* ERROR_CHECK_BEGIN */
  8551 /* ERROR_CHECK_BEGIN */
  8404 | case_list statement_list
  8552 | case_list statement_list
  8405   {$$ = NULL;
  8553   {$$ = NULL;
  8406 	 yynerrs++;
  8554 	 yynerrs++;
  8407 	 print_err_msg(current_filename, locf(@1), locl(@2), "':' missing after case list in ST 'CASE' statement.");
  8555 	 print_err_msg(current_filename, locl(@1), locf(@2), "':' missing after case list in ST 'CASE' statement.");
  8408 	}
  8556 	}
  8409 | case_list ':' error
  8557 | case_list ':' error
  8410   {$$ = NULL;
  8558   {$$ = NULL;
  8411 	 print_err_msg(current_filename, locf(@1), locl(@2), "invalid statement in case element of ST 'CASE' statement.");
  8559 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid statement in case element of ST 'CASE' statement.");
  8412 	 yyerrok;
  8560 	 yyerrok;
  8413 	}
  8561 	}
  8414 /* ERROR_CHECK_END */
  8562 /* ERROR_CHECK_END */
  8415 ;
  8563 ;
  8416 
  8564 
  8420 	{$$ = new case_list_c(locloc(@$)); $$->add_element($1);}
  8568 	{$$ = new case_list_c(locloc(@$)); $$->add_element($1);}
  8421 | case_list ',' case_list_element
  8569 | case_list ',' case_list_element
  8422 	{$$ = $1; $$->add_element($3);}
  8570 	{$$ = $1; $$->add_element($3);}
  8423 /* ERROR_CHECK_BEGIN */
  8571 /* ERROR_CHECK_BEGIN */
  8424 | case_list ',' error
  8572 | case_list ',' error
  8425   {$$ = NULL;
  8573   {$$ = $1;
  8426 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid case in case list of ST parameter assignment list.");
  8574 	 print_err_msg(current_filename, locf(@3), locl(@3), "invalid case in case list of ST parameter assignment list.");
  8427 	 yyerrok;
  8575 	 yyerrok;
  8428 	}
  8576 	}
  8429 /* ERROR_CHECK_END */
  8577 /* ERROR_CHECK_END */
  8430 ;
  8578 ;
  8431 
  8579 
  8458 	{$$ = new for_statement_c($2, $4, $6, NULL, $8, locloc(@$));}
  8606 	{$$ = new for_statement_c($2, $4, $6, NULL, $8, locloc(@$));}
  8459 /* ERROR_CHECK_BEGIN */
  8607 /* ERROR_CHECK_BEGIN */
  8460 | FOR ASSIGN expression TO expression BY expression DO statement_list END_FOR
  8608 | FOR ASSIGN expression TO expression BY expression DO statement_list END_FOR
  8461   {$$ = NULL;
  8609   {$$ = NULL;
  8462 	 yynerrs++;
  8610 	 yynerrs++;
  8463 	 print_err_msg(current_filename, locf(@1), locl(@2), "no control variable defined in ST 'FOR' statement.");
  8611 	 print_err_msg(current_filename, locl(@1), locf(@2), "no control variable defined in ST 'FOR' statement.");
  8464 	}
  8612 	}
  8465 | FOR ASSIGN expression TO expression DO statement_list END_FOR
  8613 | FOR ASSIGN expression TO expression DO statement_list END_FOR
  8466   {$$ = NULL;
  8614   {$$ = NULL;
  8467 	 yynerrs++;
  8615 	 yynerrs++;
  8468 	 print_err_msg(current_filename, locf(@1), locl(@2), "no control variable defined in ST 'FOR' statement.");
  8616 	 print_err_msg(current_filename, locl(@1), locf(@2), "no control variable defined in ST 'FOR' statement.");
  8469 	}
  8617 	}
  8470 | FOR error ASSIGN expression TO expression BY expression DO statement_list END_FOR
  8618 | FOR error ASSIGN expression TO expression BY expression DO statement_list END_FOR
  8471   {$$ = NULL;
  8619   {$$ = NULL;
  8472 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid control variable defined for ST 'FOR' statement.");
  8620 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid control variable defined for ST 'FOR' statement.");
  8473 	 yyerrok;
  8621 	 yyerrok;
  8474 	}
  8622 	}
  8475 | FOR error ASSIGN expression TO expression DO statement_list END_FOR
  8623 | FOR error ASSIGN expression TO expression DO statement_list END_FOR
  8476   {$$ = NULL;
  8624   {$$ = NULL;
  8477 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid control variable defined for ST 'FOR' statement.");
  8625 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid control variable defined for ST 'FOR' statement.");
  8478 	 yyerrok;
  8626 	 yyerrok;
  8479 	}
  8627 	}
  8480 | FOR control_variable expression TO expression BY expression DO statement_list END_FOR
  8628 | FOR control_variable expression TO expression BY expression DO statement_list END_FOR
  8481   {$$ = NULL;
  8629   {$$ = NULL;
  8482 	 yynerrs++;
  8630 	 yynerrs++;
  8483 	 print_err_msg(current_filename, locf(@2), locl(@3), "':=' missing between control variable and start expression in ST 'FOR' statement.");
  8631 	 print_err_msg(current_filename, locl(@2), locf(@3), "':=' missing between control variable and start expression in ST 'FOR' statement.");
  8484 	}
  8632 	}
  8485 | FOR control_variable expression TO expression DO statement_list END_FOR
  8633 | FOR control_variable expression TO expression DO statement_list END_FOR
  8486   {$$ = NULL;
  8634   {$$ = NULL;
  8487 	 yynerrs++;
  8635 	 yynerrs++;
  8488 	 print_err_msg(current_filename, locf(@2), locl(@3), "':=' missing between control variable and start expression in ST 'FOR' statement.");
  8636 	 print_err_msg(current_filename, locl(@2), locf(@3), "':=' missing between control variable and start expression in ST 'FOR' statement.");
  8489 	}
  8637 	}
  8490 | FOR control_variable error expression TO expression BY expression DO statement_list END_FOR
  8638 | FOR control_variable error expression TO expression BY expression DO statement_list END_FOR
  8491   {$$ = NULL;
  8639   {$$ = NULL;
  8492 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting ':=' between control variable and start expression in ST 'FOR' statement.");
  8640 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ':=' between control variable and start expression in ST 'FOR' statement.");
  8493 	 yyerrok;
  8641 	 yyerrok;
  8494 	}
  8642 	}
  8495 | FOR control_variable error expression TO expression DO statement_list END_FOR
  8643 | FOR control_variable error expression TO expression DO statement_list END_FOR
  8496   {$$ = NULL;
  8644   {$$ = NULL;
  8497 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting ':=' between control variable and start expression in ST 'FOR' statement.");
  8645 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting ':=' between control variable and start expression in ST 'FOR' statement.");
  8498 	 yyerrok;
  8646 	 yyerrok;
  8499 	}
  8647 	}
  8500 | FOR control_variable ASSIGN TO expression BY expression DO statement_list END_FOR
  8648 | FOR control_variable ASSIGN TO expression BY expression DO statement_list END_FOR
  8501   {$$ = NULL;
  8649   {$$ = NULL;
  8502 	 yynerrs++;
  8650 	 yynerrs++;
  8503 	 print_err_msg(current_filename, locf(@3), locl(@4), "no start expression defined in ST 'FOR' statement.");
  8651 	 print_err_msg(current_filename, locl(@3), locf(@4), "no start expression defined in ST 'FOR' statement.");
  8504 	}
  8652 	}
  8505 | FOR control_variable ASSIGN TO expression DO statement_list END_FOR
  8653 | FOR control_variable ASSIGN TO expression DO statement_list END_FOR
  8506   {$$ = NULL;
  8654   {$$ = NULL;
  8507 	 yynerrs++;
  8655 	 yynerrs++;
  8508 	 print_err_msg(current_filename, locf(@3), locl(@4), "no start expression defined in ST 'FOR' statement.");
  8656 	 print_err_msg(current_filename, locl(@3), locf(@4), "no start expression defined in ST 'FOR' statement.");
  8509 	}
  8657 	}
  8510 | FOR control_variable ASSIGN error TO expression BY expression DO statement_list END_FOR
  8658 | FOR control_variable ASSIGN error TO expression BY expression DO statement_list END_FOR
  8511   {$$ = NULL;
  8659   {$$ = NULL;
  8512 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid start expression defined in ST 'FOR' statement.");
  8660 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid start expression defined in ST 'FOR' statement.");
  8513 	 yyerrok;
  8661 	 yyerrok;
  8514 	}
  8662 	}
  8515 | FOR control_variable ASSIGN error TO expression DO statement_list END_FOR
  8663 | FOR control_variable ASSIGN error TO expression DO statement_list END_FOR
  8516   {$$ = NULL;
  8664   {$$ = NULL;
  8517 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid start expression in ST 'FOR' statement.");
  8665 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid start expression in ST 'FOR' statement.");
  8518 	 yyerrok;
  8666 	 yyerrok;
  8519 	}
  8667 	}
  8520 | FOR control_variable ASSIGN expression error expression BY expression DO statement_list END_FOR
  8668 | FOR control_variable ASSIGN expression error expression BY expression DO statement_list END_FOR
  8521   {$$ = NULL;
  8669   {$$ = NULL;
  8522 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting 'TO' between start expression and end expression in ST 'FOR' statement.");
  8670 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting 'TO' between start expression and end expression in ST 'FOR' statement.");
  8523 	 yyerrok;
  8671 	 yyerrok;
  8524 	}
  8672 	}
  8525 | FOR control_variable ASSIGN expression error expression DO statement_list END_FOR
  8673 | FOR control_variable ASSIGN expression error expression DO statement_list END_FOR
  8526   {$$ = NULL;
  8674   {$$ = NULL;
  8527 	 print_err_msg(current_filename, locf(@4), locl(@6), "expecting 'TO' between start expression and end expression in ST 'FOR' statement.");
  8675 	 print_err_msg(current_filename, locf(@5), locl(@5), "expecting 'TO' between start expression and end expression in ST 'FOR' statement.");
  8528 	 yyerrok;
  8676 	 yyerrok;
  8529 	}
  8677 	}
  8530 | FOR control_variable ASSIGN expression TO expression error expression DO statement_list END_FOR
  8678 | FOR control_variable ASSIGN expression TO expression error expression DO statement_list END_FOR
  8531   {$$ = NULL;
  8679   {$$ = NULL;
  8532 	 print_err_msg(current_filename, locf(@6), locl(@8), "expecting 'BY' between end expression and step expression in ST 'FOR' statement.");
  8680 	 print_err_msg(current_filename, locf(@7), locl(@7), "expecting 'BY' between end expression and step expression in ST 'FOR' statement.");
  8533 	 yyerrok;
  8681 	 yyerrok;
  8534 	}
  8682 	}
  8535 | FOR control_variable ASSIGN expression TO expression BY expression error statement_list END_FOR
  8683 | FOR control_variable ASSIGN expression TO expression BY expression error statement_list END_FOR
  8536   {$$ = NULL;
  8684   {$$ = NULL;
  8537 	 print_err_msg(current_filename, locf(@8), locl(@10), "expecting 'DO' after step expression in ST 'FOR' statement.");
  8685 	 print_err_msg(current_filename, locf(@9), locl(@9), "expecting 'DO' after step expression in ST 'FOR' statement.");
  8538 	 yyerrok;
  8686 	 yyerrok;
  8539 	}
  8687 	}
  8540 | FOR control_variable ASSIGN expression TO expression error statement_list END_FOR
  8688 | FOR control_variable ASSIGN expression TO expression error statement_list END_FOR
  8541   {$$ = NULL;
  8689   {$$ = NULL;
  8542 	 print_err_msg(current_filename, locf(@6), locl(@8), "expecting 'DO' after end expression in ST 'FOR' statement.");
  8690 	 print_err_msg(current_filename, locf(@7), locl(@7), "expecting 'DO' after end expression in ST 'FOR' statement.");
  8543 	 yyerrok;
  8691 	 yyerrok;
  8544 	}
  8692 	}
  8545 | FOR control_variable ASSIGN expression TO expression BY expression DO END_FOR
  8693 | FOR control_variable ASSIGN expression TO expression BY expression DO END_FOR
  8546   {$$ = NULL;
  8694   {$$ = NULL;
  8547 	 print_err_msg(current_filename, locf(@9), locl(@10), "no statement(s) defined after 'DO' in ST 'FOR' statement.");
  8695 	 yynerrs++;
  8548 	 yyerrok;
  8696 	 print_err_msg(current_filename, locl(@9), locf(@10), "no statement(s) defined after 'DO' in ST 'FOR' statement.");
  8549 	}
  8697 	}
  8550 | FOR control_variable ASSIGN expression TO expression DO END_FOR
  8698 | FOR control_variable ASSIGN expression TO expression DO END_FOR
  8551   {$$ = NULL;
  8699   {$$ = NULL;
  8552 	 print_err_msg(current_filename, locf(@7), locl(@8), "no statement(s) defined after 'DO' in ST 'FOR' statement.");
  8700 	 yynerrs++;
  8553 	 yyerrok;
  8701 	 print_err_msg(current_filename, locl(@7), locf(@8), "no statement(s) defined after 'DO' in ST 'FOR' statement.");
  8554 	}
  8702 	}
  8555 | FOR control_variable ASSIGN expression TO expression BY expression DO error END_FOR
  8703 | FOR control_variable ASSIGN expression TO expression BY expression DO error END_FOR
  8556   {$$ = NULL;
  8704   {$$ = NULL;
  8557 	 print_err_msg(current_filename, locf(@9), locl(@11), "invalid statement(s) defined after 'DO' in ST 'FOR' statement.");
  8705 	 print_err_msg(current_filename, locf(@10), locl(@10), "invalid statement(s) defined after 'DO' in ST 'FOR' statement.");
  8558 	 yyerrok;
  8706 	 yyerrok;
  8559 	}
  8707 	}
  8560 | FOR control_variable ASSIGN expression TO expression DO error END_FOR
  8708 | FOR control_variable ASSIGN expression TO expression DO error END_FOR
  8561   {$$ = NULL;
  8709   {$$ = NULL;
  8562 	 print_err_msg(current_filename, locf(@7), locl(@9), "invalid statement(s) defined after 'DO' in ST 'FOR' statement.");
  8710 	 print_err_msg(current_filename, locf(@8), locl(@8), "invalid statement(s) defined after 'DO' in ST 'FOR' statement.");
       
  8711 	 yyerrok;
       
  8712 	}
       
  8713 | FOR error END_FOR
       
  8714   {$$ = NULL;
       
  8715 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in ST 'FOR' statement.");
  8563 	 yyerrok;
  8716 	 yyerrok;
  8564 	}
  8717 	}
  8565 /* ERROR_CHECK_END */
  8718 /* ERROR_CHECK_END */
  8566 ;
  8719 ;
  8567 
  8720 
  8595 	{$$ = new while_statement_c($2, $4, locloc(@$));}
  8748 	{$$ = new while_statement_c($2, $4, locloc(@$));}
  8596 /* ERROR_CHECK_BEGIN */
  8749 /* ERROR_CHECK_BEGIN */
  8597 | WHILE DO statement_list END_WHILE
  8750 | WHILE DO statement_list END_WHILE
  8598   {$$ = NULL;
  8751   {$$ = NULL;
  8599 	 yynerrs++;
  8752 	 yynerrs++;
  8600 	 print_err_msg(current_filename, locf(@1), locl(@2), "no test expression defined in ST 'WHILE' statement.");
  8753 	 print_err_msg(current_filename, locl(@1), locf(@2), "no test expression defined in ST 'WHILE' statement.");
  8601 	}
  8754 	}
  8602 | WHILE error DO statement_list END_WHILE
  8755 | WHILE error DO statement_list END_WHILE
  8603   {$$ = NULL;
  8756   {$$ = NULL;
  8604 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid test expression defined for ST 'WHILE' statement.");
  8757 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid test expression defined for ST 'WHILE' statement.");
  8605 	 yyerrok;
  8758 	 yyerrok;
  8606 	}
  8759 	}
  8607 | WHILE expression error statement_list END_WHILE
  8760 | WHILE expression error statement_list END_WHILE
  8608   {$$ = NULL;
  8761   {$$ = NULL;
  8609 	 print_err_msg(current_filename, locf(@2), locl(@4), "expecting 'DO' after test expression in ST 'WHILE' statement.");
  8762 	 print_err_msg(current_filename, locf(@3), locl(@3), "expecting 'DO' after test expression in ST 'WHILE' statement.");
  8610 	 yyerrok;
  8763 	 yyerrok;
  8611 	}
  8764 	}
  8612 | WHILE expression DO END_WHILE
  8765 | WHILE expression DO END_WHILE
  8613   {$$ = NULL;
  8766   {$$ = NULL;
  8614 	 yynerrs++;
  8767 	 yynerrs++;
  8615 	 print_err_msg(current_filename, locf(@3), locl(@4), "no statement(s) defined after 'DO' in ST 'WHILE' statement.");
  8768 	 print_err_msg(current_filename, locl(@3), locf(@4), "no statement(s) defined after 'DO' in ST 'WHILE' statement.");
  8616 	}
  8769 	}
  8617 | WHILE expression DO error END_WHILE
  8770 | WHILE expression DO error END_WHILE
  8618   {$$ = NULL;
  8771   {$$ = NULL;
  8619 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid statement(s) defined after 'DO' in ST 'WHILE' statement.");
  8772 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid statement(s) defined after 'DO' in ST 'WHILE' statement.");
  8620 	 yyerrok;
  8773 	 yyerrok;
  8621 	}
  8774 	}
  8622 | WHILE error END_WHILE
  8775 | WHILE error END_WHILE
  8623   {$$ = NULL;
  8776   {$$ = NULL;
  8624 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in ST 'WHILE' statement.");
  8777 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in ST 'WHILE' statement.");
  8625 	 yyerrok;
  8778 	 yyerrok;
  8626 	}
  8779 	}
  8627 /* ERROR_CHECK_END */
  8780 /* ERROR_CHECK_END */
  8628 ;
  8781 ;
  8629 
  8782 
  8633 	{$$ = new repeat_statement_c($2, $4, locloc(@$));}
  8786 	{$$ = new repeat_statement_c($2, $4, locloc(@$));}
  8634 /* ERROR_CHECK_BEGIN */
  8787 /* ERROR_CHECK_BEGIN */
  8635 | REPEAT UNTIL expression END_REPEAT
  8788 | REPEAT UNTIL expression END_REPEAT
  8636   {$$ = NULL;
  8789   {$$ = NULL;
  8637 	 yynerrs++;
  8790 	 yynerrs++;
  8638 	 print_err_msg(current_filename, locf(@1), locl(@2), "no statement(s) defined after 'REPEAT' in ST 'REPEAT' statement.");
  8791 	 print_err_msg(current_filename, locl(@1), locf(@2), "no statement(s) defined after 'REPEAT' in ST 'REPEAT' statement.");
  8639 	}
  8792 	}
  8640 | REPEAT error UNTIL expression END_REPEAT
  8793 | REPEAT error UNTIL expression END_REPEAT
  8641   {$$ = NULL;
  8794   {$$ = NULL;
  8642 	 print_err_msg(current_filename, locf(@1), locl(@3), "invalid statement(s) defined after 'REPEAT' for ST 'REPEAT' statement.");
  8795 	 print_err_msg(current_filename, locf(@2), locl(@2), "invalid statement(s) defined after 'REPEAT' for ST 'REPEAT' statement.");
  8643 	 yyerrok;
  8796 	 yyerrok;
  8644 	}
  8797 	}
  8645 | REPEAT statement_list UNTIL END_REPEAT
  8798 | REPEAT statement_list UNTIL END_REPEAT
  8646   {$$ = NULL;
  8799   {$$ = NULL;
  8647 	 yynerrs++;
  8800 	 yynerrs++;
  8648 	 print_err_msg(current_filename, locf(@3), locl(@4), "no test expression defined after 'UNTIL' in ST 'REPEAT' statement.");
  8801 	 print_err_msg(current_filename, locl(@3), locf(@4), "no test expression defined after 'UNTIL' in ST 'REPEAT' statement.");
  8649 	}
  8802 	}
  8650 | REPEAT statement_list UNTIL error END_REPEAT
  8803 | REPEAT statement_list UNTIL error END_REPEAT
  8651   {$$ = NULL;
  8804   {$$ = NULL;
  8652 	 print_err_msg(current_filename, locf(@3), locl(@5), "invalid test expression defined after 'UNTIL' in ST 'REPEAT' statement.");
  8805 	 print_err_msg(current_filename, locf(@4), locl(@4), "invalid test expression defined after 'UNTIL' in ST 'REPEAT' statement.");
  8653 	 yyerrok;
  8806 	 yyerrok;
  8654 	}
  8807 	}
  8655 | REPEAT error END_REPEAT
  8808 | REPEAT error END_REPEAT
  8656   {$$ = NULL;
  8809   {$$ = NULL;
  8657 	 print_err_msg(current_filename, locf(@1), locl(@3), "unknown error in ST 'REPEAT' statement.");
  8810 	 print_err_msg(current_filename, locf(@2), locl(@2), "unknown error in ST 'REPEAT' statement.");
  8658 	 yyerrok;
  8811 	 yyerrok;
  8659 	}
  8812 	}
  8660 /* ERROR_CHECK_END */
  8813 /* ERROR_CHECK_END */
  8661 ;
  8814 ;
  8662 
  8815 
  8920 
  9073 
  8921   if (yynerrs > 0) {
  9074   if (yynerrs > 0) {
  8922     fprintf (stderr, "\nFound %d error(s). Bailing out!\n", yynerrs /* global variable */);
  9075     fprintf (stderr, "\nFound %d error(s). Bailing out!\n", yynerrs /* global variable */);
  8923     exit(EXIT_FAILURE);
  9076     exit(EXIT_FAILURE);
  8924   }
  9077   }
  8925 
  9078   
  8926   if (tree_root_ref != NULL)
  9079   if (tree_root_ref != NULL)
  8927     *tree_root_ref = tree_root;
  9080     *tree_root_ref = tree_root;
  8928 
  9081 
  8929   fclose(in_file);
  9082   fclose(in_file);
  8930   return 0;
  9083   return 0;