From 668a6e887c7c6d40836b619931a2377971fbfca3 Mon Sep 17 00:00:00 2001 From: Mateo Date: Mon, 19 Aug 2024 09:52:40 +0200 Subject: [PATCH] fix: goto stmt grammar --- src/lsp/cobol_parser/grammar.mly | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lsp/cobol_parser/grammar.mly b/src/lsp/cobol_parser/grammar.mly index 392c36fb..92d8fbe8 100644 --- a/src/lsp/cobol_parser/grammar.mly +++ b/src/lsp/cobol_parser/grammar.mly @@ -3453,9 +3453,15 @@ let generate_statement := let go_to_statement := | GO; TO?; %prec lowest { LoneGoTo } (* COB85; obsolete; should be sole statement of paragraph *) - | GO; TO?; targets = nel_(procedure_name); - depending_on = o(DEPENDING; ON?; ident); - { GoTo (GoToSimple { targets; depending_on }) } + | GO; TO?; target = procedure_name; + depending_on = o(pair(rl(procedure_name), DEPENDING; ON?; ident)); + { match depending_on with + | None -> GoTo (GoToSimple + { targets = NEL.One target; + depending_on = None }) + | Some (other_targets, ident) -> GoTo (GoToSimple + { targets = NEL.of_list (target :: other_targets); + depending_on = Some ident }) } | GO; TO?; ENTRY; targets = nel_(loc(alphanum)); depending_on = o(DEPENDING; ON?; ident); { GoTo (GoToEntry { targets; depending_on }) }