From dbca249757a98d6d56e23db43baa93ad30a91709 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 30 Aug 2026 21:07:48 +0200 Subject: Use arrow -> for return types --- source/lexer.elna | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'source/lexer.elna') diff --git a/source/lexer.elna b/source/lexer.elna index 83e89df..1cfe097 100644 --- a/source/lexer.elna +++ b/source/lexer.elna @@ -135,6 +135,7 @@ type _case, _do, _of, + arrow, eof ) (** @@ -313,7 +314,7 @@ begin end return -proc elna_lexer_get_transition(current_state: ElnaLexerState; character_class: ElnaLexerClass): ^ElnaLexerTransition +proc elna_lexer_get_transition(current_state: ElnaLexerState; character_class: ElnaLexerClass) -> ^ElnaLexerTransition (* Each state is 8 bytes long (2 words: action and next state). There are 23 character classes, so a transition row 8 * 23 = 184 bytes long. *) return @transition_table[cast(current_state: Word)][cast(character_class: Word)] @@ -523,7 +524,7 @@ begin end return -proc elna_lexer_token_create(kind: ElnaLexerKind; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_token_create(kind: ElnaLexerKind; position: ^ElnaPosition) -> ^ElnaLexerToken var result: ^ElnaLexerToken begin @@ -532,7 +533,7 @@ begin result^.position := position^ return result -proc elna_lexer_classify_keyword(position_start, position_end: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_keyword(position_start, position_end: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var result: ^ElnaLexerToken result_length: Word @@ -587,7 +588,7 @@ begin end return result -proc elna_lexer_classify_delimited(start_position, end_position: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_delimited(start_position, end_position: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var delimiter: Word8 result: ^ElnaLexerToken @@ -604,7 +605,7 @@ begin result^.start := start_position[1 to cast(end_position - start_position: Word)] return result -proc elna_lexer_classify_integer(start_position, end_position: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_integer(start_position, end_position: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var result: ^ElnaLexerToken begin @@ -612,7 +613,7 @@ begin result^.start := start_position[1 to cast(end_position - start_position: Word)] return result -proc elna_lexer_classify_finalize(start_position: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_finalize(start_position: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var character: Word8 result: ^ElnaLexerToken @@ -634,7 +635,7 @@ begin end return result -proc elna_lexer_classify_single(start_position: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_single(start_position: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var character: Word8 result: ^ElnaLexerToken @@ -675,7 +676,7 @@ begin end return result -proc elna_lexer_classify_composite(start_position, one_before_last: ^Word8; position: ^ElnaPosition): ^ElnaLexerToken +proc elna_lexer_classify_composite(start_position, one_before_last: ^Word8; position: ^ElnaPosition) -> ^ElnaLexerToken var first_character: Word8 last_character: Word8 @@ -696,10 +697,14 @@ begin if last_character = '=' then result := elna_lexer_token_create(ElnaLexerKind.greater_equal, position) end + elsif first_character = '-' then + if last_character = '>' then + result := elna_lexer_token_create(ElnaLexerKind.arrow, position) + end end return result -proc elna_lexer_execute_action(cursor: ^ElnaLexerCursor; action_to_perform: ElnaLexerAction): ^ElnaLexerToken +proc elna_lexer_execute_action(cursor: ^ElnaLexerCursor; action_to_perform: ElnaLexerAction) -> ^ElnaLexerToken var token: ^ElnaLexerToken begin @@ -736,7 +741,7 @@ begin end return token -proc elna_lexer_execute_transition(cursor: ^ElnaLexerCursor): ^ElnaLexerToken +proc elna_lexer_execute_transition(cursor: ^ElnaLexerCursor) -> ^ElnaLexerToken var next_transition: ^ElnaLexerTransition current_character: Word8 @@ -766,7 +771,7 @@ return * Reads the next token and writes its type into the address in the kind parameter. * Resets the lexer state for reading the next token. *) -proc elna_lexer_peek(cursor: ^ElnaLexerCursor): ^ElnaLexerToken +proc elna_lexer_peek(cursor: ^ElnaLexerCursor) -> ^ElnaLexerToken var token: ^ElnaLexerToken begin @@ -783,7 +788,7 @@ return cursor^.token (** * Reads the token and advance the lexer. *) -proc elna_lexer_read(cursor: ^ElnaLexerCursor): ^ElnaLexerToken +proc elna_lexer_read(cursor: ^ElnaLexerCursor) -> ^ElnaLexerToken var token: ^ElnaLexerToken begin -- cgit v1.2.3