diff --git a/basis/alien/prettyprint/prettyprint.factor b/basis/alien/prettyprint/prettyprint.factor index 0794ab7789..0ffd5023a7 100644 --- a/basis/alien/prettyprint/prettyprint.factor +++ b/basis/alien/prettyprint/prettyprint.factor @@ -1,14 +1,15 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: kernel combinators alien alien.strings alien.syntax -prettyprint.backend prettyprint.custom prettyprint.sections ; +math.parser prettyprint.backend prettyprint.custom +prettyprint.sections ; IN: alien.prettyprint M: alien pprint* { { [ dup expired? ] [ drop \ BAD-ALIEN pprint-word ] } { [ dup pinned-c-ptr? not ] [ drop "( displaced alien )" text ] } - [ \ ALIEN: [ alien-address pprint* ] pprint-prefix ] + [ \ ALIEN: [ alien-address >hex text ] pprint-prefix ] } cond ; M: dll pprint* dll-path dup "DLL\" " "\"" pprint-string ; diff --git a/basis/alien/syntax/syntax-docs.factor b/basis/alien/syntax/syntax-docs.factor index c9e03724f5..c9190f68c0 100644 --- a/basis/alien/syntax/syntax-docs.factor +++ b/basis/alien/syntax/syntax-docs.factor @@ -9,7 +9,7 @@ HELP: DLL" HELP: ALIEN: { $syntax "ALIEN: address" } -{ $values { "address" "a non-negative integer" } } +{ $values { "address" "a non-negative hexadecimal integer" } } { $description "Creates an alien object at parse time." } { $notes "Alien objects are invalidated between image saves and loads, and hence source files should not contain alien literals; this word is for interactive use only. See " { $link "alien-expiry" } " for details." } ; diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor index 2b0270d5f5..e8206c6968 100644 --- a/basis/alien/syntax/syntax.factor +++ b/basis/alien/syntax/syntax.factor @@ -9,7 +9,7 @@ IN: alien.syntax SYNTAX: DLL" lexer get skip-blank parse-string dlopen parsed ; -SYNTAX: ALIEN: scan string>number parsed ; +SYNTAX: ALIEN: 16 scan-base parsed ; SYNTAX: BAD-ALIEN parsed ; diff --git a/basis/compiler/tests/intrinsics.factor b/basis/compiler/tests/intrinsics.factor index 988164143f..ad2d2c8be5 100644 --- a/basis/compiler/tests/intrinsics.factor +++ b/basis/compiler/tests/intrinsics.factor @@ -472,15 +472,15 @@ cell 8 = [ ] unit-test [ ALIEN: 123 ] [ - 123 [ ] compile-call + HEX: 123 [ ] compile-call ] unit-test [ ALIEN: 123 ] [ - 123 [ { fixnum } declare ] compile-call + HEX: 123 [ { fixnum } declare ] compile-call ] unit-test [ ALIEN: 123 ] [ - [ 123 ] compile-call + [ HEX: 123 ] compile-call ] unit-test [ f ] [ @@ -522,8 +522,8 @@ cell 8 = [ [ ALIEN: 1234 ALIEN: 2234 ] [ ALIEN: 234 [ { c-ptr } declare - [ 1000 swap ] - [ 2000 swap ] bi + [ HEX: 1000 swap ] + [ HEX: 2000 swap ] bi ] compile-call ] unit-test diff --git a/basis/io/files/info/unix/openbsd/openbsd.factor b/basis/io/files/info/unix/openbsd/openbsd.factor index ef1b55cda3..fe94f70fd8 100755 --- a/basis/io/files/info/unix/openbsd/openbsd.factor +++ b/basis/io/files/info/unix/openbsd/openbsd.factor @@ -49,6 +49,6 @@ M: openbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-in M: openbsd file-systems ( -- seq ) f 0 0 getfsstat dup io-error - + [ dup byte-length 0 getfsstat io-error ] [ [ f_mntonname>> utf8 alien>string file-system-info ] { } map-as ] bi ; diff --git a/core/alien/alien-tests.factor b/core/alien/alien-tests.factor index 2d2cec168f..7eaa5cc50b 100644 --- a/core/alien/alien-tests.factor +++ b/core/alien/alien-tests.factor @@ -55,7 +55,7 @@ cell 8 = [ ] unit-test ] when -[ "ALIEN: 1234" ] [ 1234 unparse ] unit-test +[ "ALIEN: 1234" ] [ HEX: 1234 unparse ] unit-test [ ] [ 0 B{ 1 2 3 } drop ] unit-test diff --git a/core/math/math-docs.factor b/core/math/math-docs.factor index d98685fb48..97e0a1e7cf 100644 --- a/core/math/math-docs.factor +++ b/core/math/math-docs.factor @@ -282,12 +282,12 @@ HELP: fp-bitwise= { $examples "Not-a-number equality:" { $example - "USING: math prettyprint ;" + "USING: kernel math prettyprint ;" "0.0 0.0 / dup number= ." "f" } { $example - "USING: math prettyprint ;" + "USING: kernel math prettyprint ;" "0.0 0.0 / dup fp-bitwise= ." "t" } @@ -299,7 +299,7 @@ HELP: fp-bitwise= } { $example "USING: math prettyprint ;" - "-0.0 0.0 = ." + "-0.0 0.0 number= ." "t" } } ; diff --git a/core/math/parser/parser-docs.factor b/core/math/parser/parser-docs.factor index 1e3ff4f996..ebb9c8aa5e 100644 --- a/core/math/parser/parser-docs.factor +++ b/core/math/parser/parser-docs.factor @@ -5,7 +5,7 @@ IN: math.parser ARTICLE: "number-strings" "Converting between numbers and strings" "These words only convert between real numbers and strings. Complex numbers are constructed by the parser (" { $link "parser" } ") and printed by the prettyprinter (" { $link "prettyprint" } ")." $nl -"Note that only integers can be converted to and from strings using a representation other than base 10. Calling a word such as " { $link >oct } " on a float will give a result in base 10." +"Integers can be converted to and from arbitrary bases. Floating point numbers can only be converted to and from base 10 and 16." $nl "Converting numbers to strings:" { $subsection number>string } @@ -93,7 +93,19 @@ HELP: >oct HELP: >hex { $values { "n" real } { "str" string } } -{ $description "Outputs a string representation of a number using base 16." } ; +{ $description "Outputs a string representation of a number using base 16." } +{ $examples + { $example + "USING: math.parser prettyprint ;" + "3735928559 >hex ." + "\"deadbeef\"" + } + { $example + "USING: math.parser prettyprint ;" + "-15.5 >hex ." + "\"-1.fp3\"" + } +} ; HELP: string>float ( str -- n/f ) { $values { "str" string } { "n/f" "a real number or " { $link f } } } diff --git a/core/syntax/syntax-docs.factor b/core/syntax/syntax-docs.factor index 19e644cb68..e34fb0957f 100644 --- a/core/syntax/syntax-docs.factor +++ b/core/syntax/syntax-docs.factor @@ -59,20 +59,25 @@ ARTICLE: "syntax-ratios" "Ratio syntax" "More information on ratios can be found in " { $link "rationals" } ; ARTICLE: "syntax-floats" "Float syntax" -"Floating point literals must contain a decimal point, and may contain an exponent:" +"Floating point literals can be input in base 10 or 16. Base 10 literals must contain a decimal point, and may contain an exponent after " { $snippet "e" } ":" { $code "10.5" "-3.1456" "7.e13" "1.0e-5" } -"There are three special float values:" +"Base 16 literals use " { $snippet "p" } " instead of " { $snippet "e" } " for the exponent, which is still decimal:" +{ $example + "10.125 HEX: 1.44p3 = ." + "t" +} +"Syntax for special float values:" { $table { "Positive infinity" { $snippet "1/0." } } { "Negative infinity" { $snippet "-1/0." } } { "Not-a-number" { $snippet "0/0." } } } -"A Not-a-number with an arbitrary payload can be parsed in:" +"A Not-a-number with an arbitrary payload can also be parsed in:" { $subsection POSTPONE: NAN: } "More information on floats can be found in " { $link "floats" } "." ; @@ -612,8 +617,8 @@ HELP: NAN: { $examples { $example "USE: prettyprint" - "NAN: deadbeef ." - "NAN: deadbeef" + "NAN: 80000deadbeef ." + "NAN: 80000deadbeef" } } ;