mirror of https://gitlab.com/basile.b/dexed.git
added a more or less common lexer for hex and bin literals
This commit is contained in:
parent
487241064c
commit
2a36a73f22
|
@ -815,6 +815,31 @@ begin
|
|||
exit;
|
||||
end else readerReset;
|
||||
|
||||
// bin & hex literals
|
||||
if reader^ = '0' then if readerNext^ in ['b','B', 'x', 'X'] then
|
||||
begin
|
||||
fTokKind:= tkNumbr;
|
||||
readerNext;
|
||||
if (reader-1)^ in ['b','B'] then
|
||||
readWhile(reader, fTokStop, ['0','1','_'])
|
||||
else
|
||||
readWhile(reader, fTokStop, hexaChars + ['.']);
|
||||
if not tryReadDelim(reader, fTokStop, 'uL')
|
||||
then if not tryReadDelim(reader, fTokStop, 'UL')
|
||||
then if not tryReadDelim(reader, fTokStop, 'Lu')
|
||||
then if not tryReadDelim(reader, fTokStop, 'LU')
|
||||
then if reader^ in ['U','L','u', 'p', 'P', 'i'] then
|
||||
readerNext;
|
||||
if not isWhite(reader^) and not isOperator1(reader^) and
|
||||
not isSymbol(reader^) then
|
||||
begin
|
||||
fTokKind:= tkError;
|
||||
readUntilAmong(reader, fTokStop, [#0..#32] + symbChars);
|
||||
end;
|
||||
exit;
|
||||
end
|
||||
else readerPrev;
|
||||
|
||||
// numbers
|
||||
if (isNumber(reader^)) then
|
||||
begin
|
||||
|
|
|
@ -751,7 +751,7 @@ begin
|
|||
exit;
|
||||
continue;
|
||||
end;
|
||||
if isOperator3(identifier[1..length(identifier)-1]) then
|
||||
if isOperator3(identifier[1..3]) then
|
||||
begin
|
||||
reader.previous;
|
||||
addToken(ltkOperator);
|
||||
|
@ -759,7 +759,7 @@ begin
|
|||
exit;
|
||||
continue;
|
||||
end;
|
||||
if isOperator2(identifier[1..length(identifier)-2]) then
|
||||
if isOperator2(identifier[1..2]) then
|
||||
begin
|
||||
reader.previous;
|
||||
reader.previous;
|
||||
|
@ -788,7 +788,7 @@ begin
|
|||
exit;
|
||||
continue;
|
||||
end;
|
||||
if isOperator2(identifier[1..length(identifier)-1]) then
|
||||
if isOperator2(identifier[1..2]) then
|
||||
begin
|
||||
reader.previous;
|
||||
addToken(ltkOperator);
|
||||
|
|
Loading…
Reference in New Issue