Transpile type section

This commit is contained in:
2025-05-27 07:52:51 +02:00
parent c6a540000a
commit 731e9c700a
3 changed files with 171 additions and 6 deletions

View File

@ -6,6 +6,7 @@ FROM SYSTEM IMPORT ADR;
FROM Storage IMPORT DEALLOCATE, ALLOCATE;
FROM Strings IMPORT Length;
FROM MemUtils IMPORT MemZero;
FROM StrCase IMPORT Lower;
CONST
ChunkSize = 65536;
@ -210,7 +211,7 @@ BEGIN
Result := TRUE;
WHILE (Index < Length(Keyword)) AND (TokenStart <> TokenEnd) AND Result DO
Result := Keyword[Index] = TokenStart^;
Result := (Keyword[Index] = TokenStart^) OR (Lower(Keyword[Index]) = TokenStart^);
INC(TokenStart);
INC(Index)
END;
@ -344,6 +345,10 @@ BEGIN
AToken^.Kind := lexerKindModule
ELSIF CompareKeyword('IMPLEMENTATION', ALexer^.Start, ALexer^.Current) THEN
AToken^.Kind := lexerKindImplementation
ELSIF CompareKeyword('POINTER', ALexer^.Start, ALexer^.Current) THEN
AToken^.Kind := lexerKindPointer
ELSIF CompareKeyword('ARRAY', ALexer^.Start, ALexer^.Current) THEN
AToken^.Kind := lexerKindArray
ELSIF CompareKeyword('TRUE', ALexer^.Start, ALexer^.Current) THEN
AToken^.Kind := lexerKindBoolean;
AToken^.booleanKind := TRUE
@ -685,7 +690,6 @@ VAR
Result: LexerToken;
BEGIN
ALexer^.Current := ALexer^.Start;
Result.Kind := lexerKindTrait;
CurrentState := transitionStateStart;
WHILE CurrentState <> transitionStateEnd DO