[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Engineering numbers again ...

>> I don't want either of these, I just want 3,4k to be read as 34.0e3, 5.6u
>> to be read as 5.6e-6, 4p to be read as 4e-12 etc. The complete set is:
>> I can't see the hook into the reader code that allows it to be halfway
>> down the string "123.45e6" nicely reading the "123.45", hits the "e" and
>> figures "whoops this must be a floating point number, exponent coming up
>> next". Notice it doesn't know its an exponential format number 'till it
>> hits the "e". CLtL2 seems to gives me the ability to say #E3.4k
>> analogous to #C(1 2). But these are prefixes.

Prefixes is all Common Lisp gives you.  A general mechanism for
fiddling with the reader would be overkill.

You can still do what you want, perhaps a bit laboriously, by defining
your own reader functions for all tokens starting with a digit or -
(see SET-MACRO-CHARACTER).  You'll have to do some parsing yourself,
but you can get help from the standard reader using READ-FROM-STRING
with the standard readtable on selected parts of your token.