Skip to content

Commit 83b0171

Browse files
authored
Merge pull request #98 from engboris/syntax
Allow explicit end of blocks (end process, end galaxy, end interface)
2 parents c760744 + 16425c8 commit 83b0171

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/stellogen/sgen_parser.mly

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ let declaration :=
3030
| ~=SYM; EOL*; EQ; EOL*;
3131
~=galaxy_expr; <Def>
3232
| INTERFACE; EOL*; x=SYM; EOL*;
33-
i=interface_item*; END; { Def (x, Raw (Interface i)) }
33+
i=interface_item*;
34+
END; INTERFACE?; { Def (x, Raw (Interface i)) }
3435
| SHOW; EOL*; ~=galaxy_expr; <Show>
3536
| SHOWEXEC; EOL*; ~=galaxy_expr; <ShowExec>
3637
| TRACE; EOL*; ~=galaxy_expr; <Trace>
@@ -44,15 +45,15 @@ let type_declaration :=
4445

4546
let galaxy_expr :=
4647
| ~=galaxy_content; EOL*; DOT; <>
47-
| ~=galaxy_block; END; <>
48+
| ~=galaxy_block; <>
4849
| ~=undelimited_raw_galaxy; <Raw>
4950

5051
let interface_item :=
5152
| ~=type_declaration; EOL*; <>
5253

5354
let undelimited_raw_galaxy :=
54-
| ~=marked_constellation; EOL*; DOT; <Const>
55-
| GALAXY; EOL*; ~=galaxy_item*; EOL*; END; <Galaxy>
55+
| ~=marked_constellation; EOL*; DOT; <Const>
56+
| GALAXY; EOL*; ~=galaxy_item*; EOL*; END; GALAXY?; <Galaxy>
5657

5758
let delimited_raw_galaxy :=
5859
| ~=pars(marked_constellation); <Const>
@@ -82,14 +83,18 @@ let galaxy_item :=
8283
| ~=SYM; EQ; EOL*; ~=galaxy_content; DOT; EOL*; <GLabelDef>
8384
| x=SYM; EQ; EOL*; mcs=marked_constellation; EOL*; DOT; EOL*;
8485
{ GLabelDef (x, Raw (Const mcs)) }
85-
| ~=SYM; EQ; EOL*; ~=galaxy_block; END; EOL*; <GLabelDef>
86+
| ~=SYM; EQ; EOL*; ~=galaxy_block; EOL*; <GLabelDef>
8687
| ~=type_declaration; EOL*; <GTypeDef>
8788

8889
let galaxy_block :=
89-
| PROCESS; EOL*; { Process [] }
90-
| PROCESS; EOL*; ~=process_item+; <Process>
91-
| EXEC; EOL*; ~=galaxy_content; <Exec>
92-
| EXEC; EOL*; mcs=marked_constellation; { Exec (Raw (Const mcs)) }
90+
| PROCESS; EOL*; END; PROCESS?;
91+
{ Process [] }
92+
| PROCESS; EOL*; ~=process_item+; END; PROCESS?;
93+
<Process>
94+
| EXEC; EOL*; ~=galaxy_content; END; EXEC?;
95+
<Exec>
96+
| EXEC; EOL*; mcs=marked_constellation; END; EXEC?;
97+
{ Exec (Raw (Const mcs)) }
9398

9499
let process_item :=
95100
| ~=galaxy_content; DOT; EOL*; <>

0 commit comments

Comments
 (0)