diff -r 018093957030 -r fb381d2cd25b stage1_2/iec_bison.yy --- a/stage1_2/iec_bison.yy Tue Apr 17 14:21:31 2012 +0100 +++ b/stage1_2/iec_bison.yy Tue Apr 17 17:59:02 2012 +0100 @@ -1909,13 +1909,13 @@ integer_literal: integer_type_name '#' signed_integer - {$$ = new integer_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new integer_literal_c($1, $3, locloc(@$));} | integer_type_name '#' binary_integer - {$$ = new integer_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new integer_literal_c($1, $3, locloc(@$));} | integer_type_name '#' octal_integer - {$$ = new integer_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new integer_literal_c($1, $3, locloc(@$));} | integer_type_name '#' hex_integer - {$$ = new integer_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new integer_literal_c($1, $3, locloc(@$));} /* NOTE: see note in the definition of constant for reason * why signed_integer, binary_integer, octal_integer * and hex_integer are missing here! @@ -1951,7 +1951,7 @@ */ /* signed_real */ real_type_name '#' signed_real - {$$ = new real_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new real_literal_c($1, $3, locloc(@$));} /* ERROR_CHECK_BEGIN */ | real_type_name signed_real {$$ = NULL; print_err_msg(locl(@1), locf(@2), "'#' missing between real type name and value in real literal."); yynerrs++;} @@ -1975,13 +1975,13 @@ bit_string_literal: bit_string_type_name '#' integer /* i.e. unsigned_integer */ - {$$ = new bit_string_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new bit_string_literal_c($1, $3, locloc(@$));} | bit_string_type_name '#' binary_integer - {$$ = new bit_string_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new bit_string_literal_c($1, $3, locloc(@$));} | bit_string_type_name '#' octal_integer - {$$ = new bit_string_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new bit_string_literal_c($1, $3, locloc(@$));} | bit_string_type_name '#' hex_integer - {$$ = new bit_string_literal_c($1, $3, locf(@1), locl(@3));} + {$$ = new bit_string_literal_c($1, $3, locloc(@$));} /* NOTE: see note in the definition of constant for reason * why unsigned_integer, binary_integer, octal_integer * and hex_integer are missing here! @@ -6287,7 +6287,7 @@ il_instruction {$$ = new instruction_list_c(locloc(@$)); $$->add_element($1);} | any_pragma eol_list - {$$ = new instruction_list_c(locloc(@$)); $$->add_element($1);} + {$$ = new instruction_list_c(locloc(@1)); $$->add_element($1);} /* locloc(@1) is not a bug! We ignore trailing EOLs when determining symbol location! */ | instruction_list il_instruction {$$ = $1; $$->add_element($2);} | instruction_list any_pragma @@ -6298,11 +6298,11 @@ il_instruction: il_incomplete_instruction eol_list - {$$ = new il_instruction_c(NULL, $1, locloc(@$));} + {$$ = new il_instruction_c(NULL, $1, locloc(@1));} /* locloc(@1) is not a bug! We ignore trailing EOLs when determining symbol location! */ | label ':' il_incomplete_instruction eol_list - {$$ = new il_instruction_c($1, $3, locloc(@$));} + {$$ = new il_instruction_c($1, $3, locf(@1), locl(@3));} /* locf(@1), locl(@3) is not a bug! We ignore trailing EOLs when determining symbol location! */ | label ':' eol_list - {$$ = new il_instruction_c($1, NULL, locloc(@$));} + {$$ = new il_instruction_c($1, NULL, locf(@1), locl(@2));} /* locf(@1), locl(@2) is not a bug! We ignore trailing EOLs when determining symbol location! */ /* ERROR_CHECK_BEGIN */ | error eol_list {$$ = NULL; print_err_msg(locf(@1), locl(@1), "invalid IL instruction."); yyerrok;} @@ -6637,11 +6637,11 @@ il_simple_instruction: il_simple_operation eol_list - {$$ = new il_simple_instruction_c($1, locloc(@$));} + {$$ = new il_simple_instruction_c($1, locloc(@1));} /* locloc(@1) is not a bug! We ignore trailing EOLs when determining symbol location! */ | il_expression eol_list - {$$ = new il_simple_instruction_c($1, locloc(@$));} + {$$ = new il_simple_instruction_c($1, locloc(@1));} /* locloc(@1) is not a bug! We ignore trailing EOLs when determining symbol location! */ | il_formal_funct_call eol_list - {$$ = new il_simple_instruction_c($1, locloc(@$));} + {$$ = new il_simple_instruction_c($1, locloc(@1));} /* locloc(@1) is not a bug! We ignore trailing EOLs when determining symbol location! */ /* ERROR_CHECK_BEGIN */ | il_expression error {$$ = NULL; print_err_msg(locl(@1), locf(@2), "EOL missing after expression IL instruction."); yyerrok;}