diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-07-14 19:42:32 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-07-14 19:42:32 +0200 |
| commit | 308a2addf655fe45f2098f8542f0ff1290612cd9 (patch) | |
| tree | 19230bdb673d306d59b32427ad2a3ad5e9850631 /source/lexer.elna | |
| parent | a32a61813ebaecf0c1e69fd1481bf09d8c8b1420 (diff) | |
| download | elna-308a2addf655fe45f2098f8542f0ff1290612cd9.tar.gz | |
Replace procedure end with return
Diffstat (limited to 'source/lexer.elna')
| -rw-r--r-- | source/lexer.elna | 90 |
1 files changed, 36 insertions, 54 deletions
diff --git a/source/lexer.elna b/source/lexer.elna index 62ad3b1..63ca3d3 100644 --- a/source/lexer.elna +++ b/source/lexer.elna @@ -180,7 +180,7 @@ begin classification[14] := ElnaLexerClass.space; classification[33] := ElnaLexerClass.space; classification[34] := ElnaLexerClass.single -end +return proc elna_lexer_classifications2() begin @@ -214,7 +214,7 @@ begin classification[62] := ElnaLexerClass.equals; classification[63] := ElnaLexerClass.greater; classification[64] := ElnaLexerClass.other -end +return proc elna_lexer_classifications3() begin @@ -252,7 +252,7 @@ begin classification[96] := ElnaLexerClass.alpha; classification[97] := ElnaLexerClass.other; classification[98] := ElnaLexerClass.hex -end +return proc elna_lexer_classifications4() begin @@ -285,7 +285,7 @@ begin classification[125] := ElnaLexerClass.single; classification[126] := ElnaLexerClass.other; classification[127] := ElnaLexerClass.single -end +return (** * Initializes the array with character classes. @@ -312,14 +312,12 @@ begin classification[code] := ElnaLexerClass.other; code := code + 1u end -end +return 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)] -end +return @transition_table[cast(current_state: Word)][cast(character_class: Word)] (** * Parameters: @@ -337,7 +335,7 @@ begin transition^.action := action; transition^.next_state := next_state -end +return (** * Sets same action and state transition for all character classes in one transition row. @@ -373,7 +371,7 @@ begin elna_lexer_set_transition(current_state, ElnaLexerClass.less, default_action, next_state); elna_lexer_set_transition(current_state, ElnaLexerClass.other, default_action, next_state); elna_lexer_set_transition(current_state, ElnaLexerClass.number_sign, default_action, next_state) -end +return (** * The transition table describes transitions from one state to another, given @@ -508,13 +506,13 @@ begin elna_lexer_set_transition(ElnaLexerState.trait, ElnaLexerClass.hex, ElnaLexerAction.accumulate, ElnaLexerState.trait); elna_lexer_set_transition(ElnaLexerState.trait, ElnaLexerClass.zero, ElnaLexerAction.accumulate, ElnaLexerState.trait); elna_lexer_set_transition(ElnaLexerState.trait, ElnaLexerClass.x, ElnaLexerAction.accumulate, ElnaLexerState.trait) -end +return proc elna_lexer_advance(cursor: ^ElnaLexerCursor) begin cursor^.finish := cursor^.finish + 1; cursor^.position.end_location.column := cursor^.position.end_location.column + 1u -end +return proc elna_lexer_classify_space(start_position: ^Char; location: ^ElnaLocation) begin @@ -524,7 +522,7 @@ begin else location^.column := location^.column + 1u end -end +return proc elna_lexer_token_create(kind: ElnaLexerKind; position: ^ElnaPosition): ^ElnaLexerToken var @@ -532,10 +530,8 @@ var begin result := malloc(#size(ElnaLexerToken)); result^.kind := kind; - result^.position := position^; - - return result -end + result^.position := position^ +return result proc elna_lexer_classify_keyword(position_start, position_end: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var @@ -589,9 +585,8 @@ begin result^.kind := ElnaLexerKind.boolean elsif string_compare(position_start, result_length, "cast") then result^.kind := ElnaLexerKind._cast - end; - return result -end + end +return result proc elna_lexer_classify_delimited(start_position, end_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var @@ -607,20 +602,16 @@ begin elsif delimiter = '"' then result := elna_lexer_token_create(ElnaLexerKind.string, position) end; - result^.start := String(start_position, cast(end_position - start_position: Word)); - - return result -end + result^.start := String(start_position, cast(end_position - start_position: Word)) +return result proc elna_lexer_classify_integer(start_position, end_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var result: ^ElnaLexerToken begin result := elna_lexer_token_create(ElnaLexerKind.integer, position); - result^.start := String(start_position, cast(end_position - start_position: Word)); - - return result -end + result^.start := String(start_position, cast(end_position - start_position: Word)) +return result proc elna_lexer_classify_finalize(start_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var @@ -641,9 +632,8 @@ begin result := elna_lexer_token_create(ElnaLexerKind.less_than, position) elsif character = '>' then result := elna_lexer_token_create(ElnaLexerKind.greater_than, position) - end; - return result -end + end +return result proc elna_lexer_classify_single(start_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var @@ -683,9 +673,8 @@ begin result := elna_lexer_token_create(ElnaLexerKind.left_square, position) elsif character = ']' then result := elna_lexer_token_create(ElnaLexerKind.right_square, position) - end; - return result -end + end +return result proc elna_lexer_classify_composite(start_position, one_before_last: ^Char; position: ^ElnaPosition): ^ElnaLexerToken var @@ -708,9 +697,8 @@ begin if last_character = '=' then result := elna_lexer_token_create(ElnaLexerKind.greater_equal, position) end - end; - return result -end + end +return result proc elna_lexer_execute_action(cursor: ^ElnaLexerCursor; action_to_perform: ElnaLexerAction): ^ElnaLexerToken var @@ -746,9 +734,8 @@ begin elna_lexer_advance(cursor); token := elna_lexer_classify_delimited(cursor^.start, cursor^.finish, @cursor^.position) - end; - return token -end + end +return token proc elna_lexer_execute_transition(cursor: ^ElnaLexerCursor): ^ElnaLexerToken var @@ -758,10 +745,8 @@ begin current_character := cursor^.finish^; next_transition := elna_lexer_get_transition(cursor^.state, classification[cast(current_character: Word) + 1u]); - cursor^.state := next_transition^.next_state; - - return elna_lexer_execute_action(cursor, next_transition^.action) -end + cursor^.state := next_transition^.next_state +return elna_lexer_execute_action(cursor, next_transition^.action) (** * One time lexer initialization. @@ -775,8 +760,8 @@ begin cursor^.finish := code_pointer; cursor^.token := nil; cursor^.position.start_location := ElnaLocation(1u, 1u); - cursor^.position.end_location := ElnaLocation(1u, 1u); -end + cursor^.position.end_location := ElnaLocation(1u, 1u) +return (** * Reads the next token and writes its type into the address in the kind parameter. @@ -793,9 +778,8 @@ begin token := elna_lexer_execute_transition(cursor) end; cursor^.token := token - end; - return cursor^.token -end + end +return cursor^.token (** * Reads the token and advance the lexer. @@ -807,10 +791,8 @@ begin token := elna_lexer_peek(cursor); cursor^.token := nil; cursor^.start := cursor^.finish; - cursor^.position.start_location := cursor^.position.end_location; - - return token -end + cursor^.position.start_location := cursor^.position.end_location +return token (** * Skips comments. @@ -825,6 +807,6 @@ begin elna_lexer_read(cursor); token := elna_lexer_peek(cursor) end -end +return end. |
