diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-04-03 18:15:49 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-04-03 18:15:49 +0200 |
| commit | 8514fb4fa002420a164ced7fffd0df4bb016e5b6 (patch) | |
| tree | 715efd7ddb64dc4e6e36b0fa55614c57a9ad9b94 /boot/stage19/cl.elna | |
| parent | 96c6ba5087dcf3ddb09479d6b2bf47dd842d5128 (diff) | |
| download | elna-8514fb4fa002420a164ced7fffd0df4bb016e5b6.tar.gz | |
Implement copy_to_offset and copy_from_offset TAC instructions
Diffstat (limited to 'boot/stage19/cl.elna')
| -rw-r--r-- | boot/stage19/cl.elna | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/boot/stage19/cl.elna b/boot/stage19/cl.elna index 5a3916e..8959bfa 100644 --- a/boot/stage19/cl.elna +++ b/boot/stage19/cl.elna @@ -9,6 +9,7 @@ program; (* - Aggregates can be allocated on the stack. *) (* - Procedure return type is parsed. *) +(* - "|" can be used as binary "+" for pointer arithmetic. *) type (** @@ -2167,6 +2168,9 @@ begin elsif token_kind = ElnaLexerKind.minus then _elna_lexer_skip_token(); rhs_node := elna_parser_unary_expression() + elsif token_kind = ElnaLexerKind.pipe then + _elna_lexer_skip_token(); + rhs_node := elna_parser_unary_expression() elsif token_kind = ElnaLexerKind.multiplication then _elna_lexer_skip_token(); rhs_node := elna_parser_unary_expression() @@ -2241,6 +2245,8 @@ begin instruction := elna_tac_instruction_create(ElnaTacOperator.add) elsif parser_node^.operator = ElnaLexerKind.minus then instruction := elna_tac_instruction_create(ElnaTacOperator.subtract) + elsif parser_node^.operator = ElnaLexerKind.pipe then + instruction := elna_tac_instruction_create(ElnaTacOperator.add) elsif parser_node^.operator = ElnaLexerKind.multiplication then instruction := elna_tac_instruction_create(ElnaTacOperator.multiply) elsif parser_node^.operator = ElnaLexerKind.and then @@ -5165,6 +5171,8 @@ begin result := ElnaLexerKind.left_square elsif character = ']' then result := ElnaLexerKind.right_square + elsif character = '|' then + result := ElnaLexerKind.pipe end; return result end; |
