Parse and transpile unary operations

This commit is contained in:
2025-06-06 18:25:29 +02:00
parent 9bc6b50b94
commit c9c9b217a2
6 changed files with 291 additions and 29 deletions

View File

@ -294,6 +294,8 @@ BEGIN
END transition_action_skip;
(* Delimited string action. *)
PROCEDURE transition_action_delimited(lexer: PLexer; token: PLexerToken);
VAR
text_length: CARDINAL;
BEGIN
IF lexer^.Start^ = '(' THEN
token^.kind := lexerKindComment
@ -302,6 +304,10 @@ BEGIN
token^.kind := lexerKindCharacter
END;
IF lexer^.Start^ = "'" THEN
text_length := lexer^.Current - lexer^.Start;
MemZero(ADR(token^.stringKind), TSIZE(ShortString));
MemCopy(lexer^.Start, text_length, ADR(token^.stringKind));
token^.kind := lexerKindString
END;
INC(lexer^.Current)
@ -423,8 +429,8 @@ BEGIN
IF lexer^.Current^ = ',' THEN
token^.kind := lexerKindComma
END;
IF lexer^.Current^ = ',' THEN
token^.kind := lexerKindComma
IF lexer^.Current^ = '~' THEN
token^.kind := lexerKindTilde
END;
IF lexer^.Current^ = ')' THEN
token^.kind := lexerKindRightParen