diff options
Diffstat (limited to 'boot/stage24/cl.elna')
| -rw-r--r-- | boot/stage24/cl.elna | 19 |
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 |
