Files
ioccc/2015/burton/src.doc.txt
T
Cody Boone Ferguson 47874d3820 Add 2015/burton/try.sh + format/typo checks
Renamed road.to.obscurity road.to.obscurity.md and make it markdown
format.

Add try.sh and try.this.txt which the script uses.

Format check README.md file, road.to.obscurity.md, spoilers.md.

The man pages have not been typo checked yet. The try.sh script might be
improved and there is another issue that is pending that prevents
completion of this entry (or potentially does) but it is mostly
complete.
2023-12-09 12:17:24 -08:00

68 lines
2.1 KiB
Plaintext

memory map: B [128,i/o] A [128,tokens] x [32,hexconv] o [224,registers]
Memory is "allocated" from the stack, by taking a local (stack) variable
and subtracting 64k -- thereby leaving plenty of room for even relatively
large stack frames during recursion.
i main(i,c**) parse command line or stdin, assignments, print result, error recovery
i64 _ dot
c *A lexical tokens
c *B input buffer
td C unsigned
c D some state between funcs
c *E error string, end pointer
i64 F() expr: + - ^ |
uc G() non-local goto
#d H unsigned
#d I typedef
td J jmp_buf
c *K pointer to cmd line args
td L char
v M(u64) detect errors, save answer in dot, format result in decimal and hex
c *N freebie NULL pointer
td O unsigned char
td P void
td Q int
#d R return
c S syntax error + tokens
c *T current token pointer
v U(c*) print the registers
td V long long
#d W(x) for(;x;)
td X long - only for rule2sp.c
td Y unsigned short
td Z unsigned long long
i64 a derived: 32
i64 b derived: 1
i64 _b(i64) term: << >> >>>
i64 c derived: 10
i64 _c(c*) convert binary global j to ASCII decimal
i64 d freebie: 0
v _d(i64) accumulate converted ASCII bytes into j in base passed in
i64 e derived: 256
i64 f derived: 2
i64 _f() convert from ASCII to binary: selects convert base (10,8,16), result in j
u64 g(u16) byte swap 16-bits
u64 h(u32) byte swap 32-bits
i64 i(u64) select size and byte swap minimal bytes
v _i(c*) conditional print
i64 j holds partial/accumulated results
*() k ptr-to-func-getchar
i _k() get chars from saved cmd line
jb l for parser error recovery
c m() scans input for token, ignores whitespace
c n() get next input character
i64 *o registers
u32 p(c*) writes to stdout until NUL, newline appended intelligently
v q(**) init
i64 r(c) writes c to stdout
i64 s derived: 8
i64 t derived: 4
i64 u derived: 3
c v current input token
i64 w() read from stdin until newline or semi, skips blank lines + comments, return len
c *x aptly named hex conversion table
i64 y() term: * / % & (<< >> >>>)
i64 z() factor ~ ! ? -/+ () VAR NUM DOT