Index: synhighlighterpas.pp
===================================================================
--- synhighlighterpas.pp	(revision 22174)
+++ synhighlighterpas.pp	(working copy)
@@ -383,6 +383,8 @@
     {$ENDIF}
     procedure IdentProc;
     procedure IntegerProc;
+    procedure BinaryProc;
+    procedure OctalProc;
     procedure LFProc;
     procedure LowerProc;
     procedure NullProc;
@@ -1833,12 +1835,14 @@
         fProcTable[I] := @SpaceProc;
       '#': fProcTable[I] := @AsciiCharProc;
       '$': fProcTable[I] := @IntegerProc;
+      '%': fProcTable[I] := @BinaryProc;
+      '&': fProcTable[I] := @OctalProc;      
       #39: fProcTable[I] := @StringProc;
       '0'..'9': fProcTable[I] := @NumberProc;
       'A'..'Z', 'a'..'z', '_':
         fProcTable[I] := @IdentProc;
       '{': fProcTable[I] := @BraceOpenProc;
-      '}', '!', '"', '%', '&', '('..'/', ':'..'@', '['..'^', '`', '~':
+      '}', '!', '"', '('..'/', ':'..'@', '['..'^', '`', '~':
         begin
           case I of
             '(': fProcTable[I] := @RoundOpenProc;
@@ -2194,6 +2198,21 @@
   {$ENDIF}
 end;
 
+procedure TSynPasSyn.BinaryProc;
+begin
+  inc(Run);
+  fTokenID := tkNumber;
+  while FLine[Run] in ['0'..'1'] do inc(Run);
+end;
+
+procedure TSynPasSyn.OctalProc;
+begin
+  inc(Run);
+  fTokenID := tkNumber;
+  while FLine[Run] in ['0'..'7'] do inc(Run);
+end;
+
+
 procedure TSynPasSyn.LFProc;
 begin
   fTokenID := tkSpace;
