From 146f164b219cb1d592b48eff1078c3861087ace6 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 1 Jul 2026 23:06:50 +0200 Subject: Parse record extensions --- boot/stage24/cl.elna | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'boot/stage24') diff --git a/boot/stage24/cl.elna b/boot/stage24/cl.elna index 3bc9d7d..3e17e07 100644 --- a/boot/stage24/cl.elna +++ b/boot/stage24/cl.elna @@ -274,7 +274,8 @@ type kind: ElnaTreeKind; position: ElnaPosition; members: ^ElnaTreeField; - length: Word + length: Word; + parent: String end ElnaTreeNamedTypeExpression = record kind: ElnaTreeKind; @@ -3941,6 +3942,22 @@ begin result^.length := 0; result^.position := token^.position; + token := elna_lexer_peek(cursor); + if token^.kind = ElnaLexerKind.left_paren then + elna_lexer_read(cursor); + + token := elna_parser_expect(cursor, ElnaLexerKind.identifier, error_list); + if token = nil then + result := free_and_nil(result); + goto elna_parser_record_type_expression_end + end; + result^.parent := token^.start; + if elna_parser_expect(cursor, ElnaLexerKind.right_paren, error_list) = nil then + result := free_and_nil(result); + goto elna_parser_record_type_expression_end + end + end; + .elna_parser_record_type_expression_loop; token := elna_lexer_read(cursor); if token^.kind = ElnaLexerKind._end then -- cgit v1.2.3