+###### test list
+ scanner_tests += "testnum"
+
+###### test: testnum
+ 12345
+ 1234.56
+ 1234.56e7
+ 1234.56e-7
+ 0x1234
+ 0x123,456
+ 0o777
+ 0o111.111p4
+ 0b11011110p3
+
+ 123 456 789
+ 0x1234_5678_9abc
+
+ "Now for some non-number"
+ 1234p4
+ 12-34
+ 01234
+ 0c1234
+ 123.456e1a
+ 123.e4
+ 0x123 456
+ 0b1234
+ 123_345_.34
+ .75
+
+###### output: testnum
+ Tokenizing:
+ 2:0 number(12345) 12345
+ 3:0 newline()
+ 3:0 number(1234.56) 30864/25
+ 4:0 newline()
+ 4:0 number(1234.56e7) 12345600000
+ 5:0 newline()
+ 5:0 number(1234.56e-7) 1929/15625000
+ 6:0 newline()
+ 6:0 number(0x1234) 4660
+ 7:0 newline()
+ 7:0 number(0x123,456) 596523/2048
+ 8:0 newline()
+ 8:0 number(0o777) 511
+ 9:0 newline()
+ 9:0 number(0o111.111p4) 37449/32
+ 10:0 newline()
+ 10:0 number(0b11011110p3) 1776
+ 12:0 newline()
+ 12:0 newline()
+ 12:0 number(123 456 789) 123456789
+ 13:0 newline()
+ 13:0 number(0x1234_5678_9abc) 20015998343868
+ 15:0 newline()
+ 15:0 newline()
+ 15:0 string("Now for some non-..) Now for some non-n..
+ 16:0 newline()
+ 16:0 number(1234p4) BAD NUMBER
+ 17:0 newline()
+ 17:0 number(12) 12
+ 17:2 mark(-)
+ 17:3 number(34) 34
+ 18:0 newline()
+ 18:0 number(01234) BAD NUMBER
+ 19:0 newline()
+ 19:0 number(0c1234) BAD NUMBER
+ 20:0 newline()
+ 20:0 number(123.456e1a) a 30864/25
+ 21:0 newline()
+ 21:0 number(123.e4) 1230000
+ 22:0 newline()
+ 22:0 number(0x123 456) BAD NUMBER
+ 23:0 newline()
+ 23:0 number(0b1234) BAD NUMBER
+ 24:0 newline()
+ 24:0 number(123_345) 123345
+ 24:7 ident(_)
+ 24:8 mark(.)
+ 24:9 number(34) 34
+ 25:0 newline()
+ 25:0 mark(.)
+ 25:1 number(75) 75
+ 26:0 newline()
+ 26:0 eof()
+