print.nv
· 2.1 KiB · Text
Bruto
Playground
|:: print? :string: '%d'| :: print a number
|:: print? :string: '%b'| :: print a number :base: 2
|:: print? :string: '%x'| :: print a number :base: 16
|:: print? :string: '%s'| :: print a string
|:: print? :string: '{}'| :: print an argument
|:: print? :string: '\n'| :string: 10
|:: print? :string: '\t'| :string: 9
|:: print? :string: '\r'| :string: 13
|:: print? :string: '\0'| :string: 0
|:: print? :string: $ | :@stdio: write $
|:: print :string: |
|:: print |
|:: print an argument :arguments: string| :: print a string
|:: print an argument :arguments: number| :: print a number
|:: print an argument :arguments: |
|:: print an argument :arguments: $ | :: error -- unknown argument type $
|:: print a number|
:: convert an argument to a string
:: print an argument
|:: print a string? :arguments: $|:@stdio: write $
|:: print a string :arguments: |
|:: print a string |
|:: convert an argument to a string :arguments: 0|
:arguments: string :arguments:
'0'
:arguments:
|:: convert an argument to a string :arguments: $|
:: break $ into digits
:: make those digits printable
:: push a separator to the arguments stack
:: move those digits to the arguments stack
:: set the argument type to string
|:: break 0 into digits :base: $|
|:: break $number into digits :@rpn.stack: ($next $digit)|
:digits: $digit
:: break $next into digits
|:: break $number into digits? :base: $base?|
:@rpn: ($number $base % $number $base /)
|:: break $number into digits?|
:base: 10
|:: make those digits printable? :@rpn.stack: $| :printable digits: $
|:: make those digits printable? :digits: $| :@rpn: ($ 48 +)
|:: make those digits printable |
|:: push a separator to the arguments stack| :arguments:
|:: move those digits to the arguments stack? :printable digits: $| :arguments: $
|:: move those digits to the arguments stack |
|:: set the argument type to $| :arguments: $
||:: print :string:
"%d, and a %d, and a %d, %d, %d, %d...!\n" :arguments: (1 2 1 2 3 4)
:string:
| 1 | |:: print? :string: '%d'| :: print a number |
| 2 | |:: print? :string: '%b'| :: print a number :base: 2 |
| 3 | |:: print? :string: '%x'| :: print a number :base: 16 |
| 4 | |:: print? :string: '%s'| :: print a string |
| 5 | |:: print? :string: '{}'| :: print an argument |
| 6 | |:: print? :string: '\n'| :string: 10 |
| 7 | |:: print? :string: '\t'| :string: 9 |
| 8 | |:: print? :string: '\r'| :string: 13 |
| 9 | |:: print? :string: '\0'| :string: 0 |
| 10 | |:: print? :string: $ | :@stdio: write $ |
| 11 | |:: print :string: | |
| 12 | |:: print | |
| 13 | |
| 14 | |:: print an argument :arguments: string| :: print a string |
| 15 | |:: print an argument :arguments: number| :: print a number |
| 16 | |:: print an argument :arguments: | |
| 17 | |:: print an argument :arguments: $ | :: error -- unknown argument type $ |
| 18 | |
| 19 | |:: print a number| |
| 20 | :: convert an argument to a string |
| 21 | :: print an argument |
| 22 | |
| 23 | |:: print a string? :arguments: $|:@stdio: write $ |
| 24 | |:: print a string :arguments: | |
| 25 | |:: print a string | |
| 26 | |
| 27 | |:: convert an argument to a string :arguments: 0| |
| 28 | :arguments: string :arguments: |
| 29 | '0' |
| 30 | :arguments: |
| 31 | |:: convert an argument to a string :arguments: $| |
| 32 | :: break $ into digits |
| 33 | :: make those digits printable |
| 34 | :: push a separator to the arguments stack |
| 35 | :: move those digits to the arguments stack |
| 36 | :: set the argument type to string |
| 37 | |
| 38 | |:: break 0 into digits :base: $| |
| 39 | |:: break $number into digits :@rpn.stack: ($next $digit)| |
| 40 | :digits: $digit |
| 41 | :: break $next into digits |
| 42 | |:: break $number into digits? :base: $base?| |
| 43 | :@rpn: ($number $base % $number $base /) |
| 44 | |:: break $number into digits?| |
| 45 | :base: 10 |
| 46 | |
| 47 | |:: make those digits printable? :@rpn.stack: $| :printable digits: $ |
| 48 | |:: make those digits printable? :digits: $| :@rpn: ($ 48 +) |
| 49 | |:: make those digits printable | |
| 50 | |
| 51 | |:: push a separator to the arguments stack| :arguments: |
| 52 | |
| 53 | |:: move those digits to the arguments stack? :printable digits: $| :arguments: $ |
| 54 | |:: move those digits to the arguments stack | |
| 55 | |
| 56 | |:: set the argument type to $| :arguments: $ |
| 57 | |
| 58 | ||:: print :string: |
| 59 | "%d, and a %d, and a %d, %d, %d, %d...!\n" :arguments: (1 2 1 2 3 4) |
| 60 | :string: |