1:- module(tidylog_number_hex, [hex//1]). 2 3% Parse Prolog hexadecimal number (never used for generating) 4 5hex(Neg) --> 6 "-", 7 hex_(N), 8 { Neg is -N }. 9hex(N) --> 10 hex_(N). 11 12hex_(N) --> 13 "0x", 14 digit(Code), 15 digits(Codes), 16 { name(N,[0'0, 0'x, Code|Codes]) }. 17 18 19digit(C) --> 20 [C], 21 { between(0'0,0'9,C) 22 ; between(0'a,0'f,C) 23 ; between(0'A,0'F,C) 24 }. 25 26 27digits([0'_,Code|Codes]) --> 28 [0'_], 29 digit(Code), 30 digits(Codes). 31digits([Code|Codes]) --> 32 digit(Code), 33 digits(Codes). 34digits([]) --> 35 []