aboutsummaryrefslogtreecommitdiff
path: root/boot/stage24
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-01 23:06:50 +0200
committerEugen Wissner <belka@caraus.de>2026-07-01 23:06:50 +0200
commit146f164b219cb1d592b48eff1078c3861087ace6 (patch)
treed10d8f810761e2d4b26d449b58371c207e4fd3ef /boot/stage24
parent44143ee21da8725df24ddf59ed91d7b47b7092c2 (diff)
downloadelna-146f164b219cb1d592b48eff1078c3861087ace6.tar.gz
Parse record extensionsHEADmaster
Diffstat (limited to 'boot/stage24')
-rw-r--r--boot/stage24/cl.elna19
1 files changed, 18 insertions, 1 deletions
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