1:- module(tidylog_number_binary, [binary//1]).    2
    3% Parse Prolog binary number (never used for generating)
    4
    5binary(Neg) -->
    6    "-",
    7    binary_(N),
    8    { Neg is -N }.
    9binary(N) -->
   10    binary_(N).
   11
   12binary_(N) -->
   13    "0b",
   14    digit(Code),
   15    digits(Codes),
   16    { name(N,[0'0, 0'b, Code|Codes]) }.
   17
   18
   19digit(C) -->
   20    [C],
   21    { C=0'0; C=0'1 }.
   22
   23
   24digits([0'_,Code|Codes]) -->
   25    [0'_],
   26    digit(Code),
   27    digits(Codes).
   28digits([Code|Codes]) -->
   29    digit(Code),
   30    digits(Codes).
   31digits([]) -->
   32    []