diff --git a/src/u_sxsyn.pas b/src/u_sxsyn.pas index c13f30aa..200c3783 100644 --- a/src/u_sxsyn.pas +++ b/src/u_sxsyn.pas @@ -525,6 +525,8 @@ begin end; procedure TSynSxSyn.lexHexLiteral(); +var + firstChar: Boolean = false; begin fTokStop += 2; fTokKind:=TTokenKind.tkNumbr; @@ -533,7 +535,10 @@ begin case fLineBuf[fTokStop] of '0'..'9', 'a'..'f', 'A'..'F', '_': begin + if not firstChar and (fLineBuf[fTokStop] = '_') then + fTokKind:=TTokenKind.tkError; fTokStop += 1; + firstChar := true; continue; end else while (fTokStop <= fLineBuf.length) and @@ -548,6 +553,8 @@ begin end; procedure TSynSxSyn.lexBinLiteral(); +var + firstChar: Boolean = false; begin fTokStop += 2; fTokKind:=TTokenKind.tkNumbr; @@ -556,7 +563,10 @@ begin case fLineBuf[fTokStop] of '0', '1', '_': begin + if not firstChar and (fLineBuf[fTokStop] = '_') then + fTokKind:=TTokenKind.tkError; fTokStop += 1; + firstChar := true; continue; end; else while (fTokStop <= fLineBuf.length) and