From 6e2209e3b09bf10f8f78f6838bd93ccb399f9a13 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 26 Nov 2023 03:24:33 +0100 Subject: [PATCH] sxsyn, add support for char literals --- src/u_sxsyn.pas | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/u_sxsyn.pas b/src/u_sxsyn.pas index 373155d7..568262b4 100644 --- a/src/u_sxsyn.pas +++ b/src/u_sxsyn.pas @@ -91,6 +91,7 @@ type procedure lexFloatingLiteralFractionalPart(); procedure lexExponent(); procedure lexStringLiteral(); + procedure lexCharLiteral(); procedure lexRawStringLiteral(); procedure lexLineComment(); procedure lexStarComment(); @@ -577,6 +578,25 @@ begin end; end; +procedure TSynSxSyn.lexCharLiteral(); +begin + fTokKind := TTokenKind.tkStrng; + fTokStop += 1; + while fTokStop <= fLineBuf.length do + begin + case fLineBuf[fTokStop] of + '\' : fTokStop += 2; + #39 : + begin + fTokStop += 1; + exit; + end + else fTokStop += 1; + end; + end; + fTokKind := TTokenKind.tkError; +end; + procedure TSynSxSyn.lexStringLiteral(); var firstLine: Boolean; @@ -770,6 +790,8 @@ begin end; // number '1' .. '9' : lexIntLiteral(); + // char + #39 : lexCharLiteral(); // "string" '"': lexStringLiteral(); // `string`