diff options
Diffstat (limited to 'boot/stage21/cl.elna')
| -rw-r--r-- | boot/stage21/cl.elna | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/boot/stage21/cl.elna b/boot/stage21/cl.elna index d00c3b6..bd54ecd 100644 --- a/boot/stage21/cl.elna +++ b/boot/stage21/cl.elna @@ -3991,10 +3991,16 @@ begin result^.parameters := parameter_head; (* Skip semicolon or arrow. *) - token := elna_lexer_read(cursor); + token := elna_lexer_peek(cursor); if token^.kind = ElnaLexerKind.arrow then + elna_lexer_read(cursor); result^.return_type := elna_parser_type_expression(cursor); + token := elna_lexer_peek(cursor); + if token^.kind = ElnaLexerKind.semicolon then + elna_lexer_read(cursor) + end + elsif token^.kind = ElnaLexerKind.semicolon then elna_lexer_read(cursor) else result^.return_type := nil @@ -4270,8 +4276,10 @@ begin current_declaration := parser_node; (* Skip semicolon. *) - elna_lexer_read(cursor); - + token := elna_lexer_peek(cursor); + if token^.kind = ElnaLexerKind.semicolon then + elna_lexer_read(cursor) + end; goto elna_parser_procedures_loop end; return result @@ -4393,8 +4401,10 @@ begin elna_lexer_read(cursor); result^.type_expression := elna_parser_type_expression(cursor); - elna_lexer_read(cursor); - + token := elna_lexer_peek(cursor); + if token^.kind = ElnaLexerKind.semicolon then + elna_lexer_read(cursor); + end; return result end; @@ -4512,8 +4522,10 @@ begin variable_node := elna_parser_variable_declaration(cursor); (* Skip semicolon. *) - elna_lexer_read(cursor); - + token := elna_lexer_peek(cursor); + if token^.kind = ElnaLexerKind.semicolon then + elna_lexer_read(cursor) + end; if result = nil then result := variable_node else @@ -6032,4 +6044,4 @@ begin else exit(4) end -end; +end. |
