1:- module(tidylog_number_octal, [octal//1]).    2
    3% Parse Prolog octal number (never used for generating)
    4
    5octal(Neg) -->
    6    "-",
    7    octal_(N),
    8    { Neg is -N }.
    9octal(N) -->
   10    octal_(N).
   11
   12octal_(N) -->
   13    "0o",
   14    digit(Code),
   15    digits(Codes),
   16    { name(N,[0'0, 0'o, Code|Codes]) }.
   17
   18
   19digit(C) -->
   20    [C],
   21    { between(0'0,0'7,C) }.
   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    []