@@ -231,6 +231,7 @@ TmwBasePasLex = class(TObject)
231231 procedure AmpersandOpProc ;
232232 procedure AsciiCharProc ;
233233 procedure AnsiProc ;
234+ procedure BinaryIntegerProc ;
234235 procedure BorProc ;
235236 procedure BraceCloseProc ;
236237 procedure BraceOpenProc ;
@@ -1255,12 +1256,13 @@ procedure TmwBasePasLex.MakeMethodTables;
12551256 #1 ..#9 , #11 , #12 , #14 ..#32 : FProcTable[I] := SpaceProc;
12561257 ' #' : FProcTable[I] := AsciiCharProc;
12571258 ' $' : FProcTable[I] := IntegerProc;
1259+ ' %' : FProcTable[I] := BinaryIntegerProc;
12581260 #39 : FProcTable[I] := StringProc;
12591261 ' 0' ..' 9' : FProcTable[I] := NumberProc;
12601262 ' A' ..' Z' , ' a' ..' z' , ' _' : FProcTable[I] := IdentProc;
12611263 ' {' : FProcTable[I] := BraceOpenProc;
12621264 ' }' : FProcTable[I] := BraceCloseProc;
1263- ' !' , ' "' , ' % ' , ' &' , ' (' ..' /' , ' :' ..' @' , ' [' ..' ^' , ' `' , ' ~' :
1265+ ' !' , ' "' , ' &' , ' (' ..' /' , ' :' ..' @' , ' [' ..' ^' , ' `' , ' ~' :
12641266 begin
12651267 case I of
12661268 ' (' : FProcTable[I] := RoundOpenProc;
@@ -1433,6 +1435,14 @@ procedure TmwBasePasLex.BraceCloseProc;
14331435 FOnMessage(Self, meError, ' Illegal character' , PosXY.X, PosXY.Y);
14341436end ;
14351437
1438+ procedure TmwBasePasLex.BinaryIntegerProc ;
1439+ begin
1440+ Inc(FBuffer.Run);
1441+ FTokenID := ptIntegerConst;
1442+ while CharInSet(FBuffer.Buf[FBuffer.Run], [' 0' , ' 1' , ' _' ]) do
1443+ Inc(FBuffer.Run);
1444+ end ;
1445+
14361446procedure TmwBasePasLex.BorProc ;
14371447var
14381448 BeginRun: Integer;
@@ -1863,7 +1873,7 @@ procedure TmwBasePasLex.IntegerProc;
18631873begin
18641874 Inc(FBuffer.Run);
18651875 FTokenID := ptIntegerConst;
1866- while CharInSet(FBuffer.Buf[FBuffer.Run], [' 0' ..' 9' , ' A' ..' F' , ' a' ..' f' ]) do
1876+ while CharInSet(FBuffer.Buf[FBuffer.Run], [' 0' ..' 9' , ' A' ..' F' , ' a' ..' f' , ' _ ' ]) do
18671877 Inc(FBuffer.Run);
18681878end ;
18691879
@@ -1944,7 +1954,7 @@ procedure TmwBasePasLex.NumberProc;
19441954begin
19451955 Inc(FBuffer.Run);
19461956 FTokenID := ptIntegerConst;
1947- while CharInSet(FBuffer.Buf[FBuffer.Run], [' 0' ..' 9' , ' .' , ' e' , ' E' ]) do
1957+ while CharInSet(FBuffer.Buf[FBuffer.Run], [' 0' ..' 9' , ' .' , ' e' , ' E' , ' _ ' ]) do
19481958 begin
19491959 case FBuffer.Buf[FBuffer.Run] of
19501960 ' .' :
0 commit comments