[COMMITTED] a68: fix error handling in top-down parser

Pietro Monteiro pietro.gcc@sociotechnical.xyz
Sat Dec 27 20:05:38 GMT 2025


On Sat, Dec 27, 2025, at 1:56 PM, Jose E. Marchesi wrote:
> Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
>
> gcc/algol68/ChangeLog
>
> 	* a68-parser-top-down.cc (a68_top_down_parser): Stop parsing after
> 	longjump.
>
> gcc/testsuite/ChangeLog
>
> 	* algol68/compile/error-loop-1.a68: New test.
> ---
>  gcc/algol68/a68-parser-top-down.cc             | 8 ++++----
>  gcc/testsuite/algol68/compile/error-loop-1.a68 | 1 +
>  2 files changed, 5 insertions(+), 4 deletions(-)
>  create mode 100644 gcc/testsuite/algol68/compile/error-loop-1.a68
>
> diff --git a/gcc/algol68/a68-parser-top-down.cc 
> b/gcc/algol68/a68-parser-top-down.cc
> index e4a3bf8c854..4a79e58217a 100644
> --- a/gcc/algol68/a68-parser-top-down.cc
> +++ b/gcc/algol68/a68-parser-top-down.cc
> @@ -891,9 +891,9 @@ a68_top_down_parser (NODE_T *p)
>  	(void) top_down_prelude_packet (p);
>        else

Do you need to add an open bracket '{' here because now the top_down_xxx calls are part of it?

>  	(void) top_down_particular_program (p);
> -    }
> 
> -  top_down_loops (p);
> -  top_down_formats (p);
> -  top_down_access (p);
> +      top_down_loops (p);
> +      top_down_formats (p);
> +      top_down_access (p);

Similarly another close bracket '}' here?

> +    }
>  }
> diff --git a/gcc/testsuite/algol68/compile/error-loop-1.a68 
> b/gcc/testsuite/algol68/compile/error-loop-1.a68
> new file mode 100644
> index 00000000000..bc3b2e2ad70
> --- /dev/null
> +++ b/gcc/testsuite/algol68/compile/error-loop-1.a68
> @@ -0,0 +1 @@
> +from i from 1 to 10 do skip od { dg-error "" }
> -- 
> 2.30.2

pietro


More information about the Algol68 mailing list