validate 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. #!./tt++ -G
  2. #0 1: #math
  3. #0 2: #line
  4. #0 3: #return
  5. #0 4: #buffer
  6. #0 5: #switch
  7. #0 6: #class
  8. #line sub arg #var arg {%0}
  9. #if {"$arg" == "draw"}
  10. {
  11. #screen clear all;
  12. #draw convert scroll Red Blue box 1 1 5 40 convert\nx\ny;
  13. #draw Red box 1 1 2 2;
  14. #draw rounded Red box 3 1 4 2;
  15. #draw tubed Red box 5 1 6 2;
  16. #draw crossed Red box 8 1 9 2;
  17. #draw Green line 1 4 1 14;
  18. #draw Green teed line 2 4 2 14;
  19. #draw Green jeweled line 3 4 3 14;
  20. #draw Green circled line 4 4 4 14;
  21. #draw Green left circled line 5 4 5 14;
  22. #draw Green right circled line 6 4 6 14;
  23. #draw Green bot vertical teed line 7 4 7 14;
  24. #draw Green top vertical teed line 8 4 8 14;
  25. #draw Yellow left horizontal teed line 1 16 10 16;
  26. #draw Yellow right horizontal teed line 1 18 10 18;
  27. #draw Yellow top circled line 1 20 10 20;
  28. #draw Yellow bottom circled line 1 22 10 22;
  29. #draw Yellow pruned circled line 1 24 10 24;
  30. #draw Yellow filled circled line 1 26 10 26;
  31. #draw Yellow filled jeweled line 1 28 10 28;
  32. #draw Cyan box 1 40 10 60;
  33. #draw Jade rounded box 2 41 9 59;
  34. #draw Azure pruned box 2 41 9 59;
  35. #draw Violet numbered box 3 42 8 58;
  36. #draw White rounded tubed box 4 43 7 57;
  37. #draw Magenta Green round table 12 1 20 38 {{a}{b}{c}{d}}{{e}{f}{g}{h}}{{i}{j}{k}{l}};
  38. #draw Magenta Green grid table 12 42 21 78 {{a}{b}{c}{d}}{{e}{f}{g}{h}}{{i}{j}{k}{l}};
  39. #draw White Red talign box 22 1 27 19 talign;
  40. #draw White Red balign box 22 21 27 39 balign;
  41. #draw White Red lalign box 22 41 27 59 lalign;
  42. #draw White Red ralign box 22 61 27 79 ralign;
  43. #draw White Red calign talign balign box 22 81 26 99 calign;
  44. #draw Lime Azure cursive box 28 1 31 19 cursive;
  45. #draw Lime Azure fat box 28 21 31 39 fat;
  46. #draw Lime Azure sansser box 28 41 31 59 sansserif;
  47. #draw Lime Azure ualign box 28 61 31 79 { u\na\nl\ni\ng\nn};
  48. #draw Lime Azure scaled box 28 81 31 99 scaled;
  49. #draw Violet Jade box 32 1 37 19 test of a test of a test;
  50. #draw Violet Jade box 32 21 37 39 {test} {of a test} {of a test};
  51. #draw Violet Jade box 32 41 37 59 test\nof a test\nof a test;
  52. #draw Violet Jade box 32 61 37 79 color<118>test<128>test<138>test<148>test;
  53. #draw Violet Jade box 32 81 37 99 { offset test};
  54. #end \
  55. }
  56. #draw Yellow Green scroll box 1 1 3 -1 Running Validator
  57. #format start %U
  58. #math error 0
  59. #alias error
  60. {
  61. #math error $error + 1;
  62. #line ignore #showme <118>Failed test %0
  63. }
  64. #0 )=-=( ERROR 1 )=-=( 0#
  65. #math tmp 1 + 1
  66. #if {$tmp != 2}{error 1: math failure}
  67. #math tmp 7 / 11 * 100.00
  68. #if {"$tmp" != "63.64"} {error 1.1: math failure}
  69. #math tmp (1 + 1) % 10
  70. #if {$tmp != 2} {error 1.2: math failure}
  71. #0 )=-=( ERROR 2 )=-=( 0#
  72. #alias {test} {#math tmp $tmp + 1}
  73. #line oneshot #alias {test%*} {#nop} {4}
  74. #math tmp 0
  75. #2 test
  76. #if {$tmp != 1}
  77. {
  78. error 2: oneshot or math or alias failure
  79. }
  80. #0 )=-=( ERROR 3 )=-=( 0#
  81. #1 {#return;error 3: #return failure}
  82. #0 )=-=( ERROR 4 )=-=( 0#
  83. #buf get tmp -3 -1
  84. #if {&tmp[] != 3} error 4.1: buffer or variable or if failure (&&tmp[] != 3)
  85. #if {&tmp[%*] != 3} error 4.2: buffer or variable or if failure (&&tmp[%*] != 3)
  86. #if {&{tmp[]} != 3} error 4.3: buffer or variable or if failure (&&{tmp[]} != 3)
  87. #if {&{tmp[%*]} != 3} error 4.4: buffer or variable or if failure (&&{tmp[%*]} != 3)
  88. #showme $arg
  89. #0 )=-=( ERROR 5 )=-=( 0#
  90. #switch {3} {#case 3 #return;#default error 5.0: switch failure}
  91. #switch {1+2} {#case 3 #return;#default error 5.1: switch failure}
  92. #switch {"bla"} {#case "bla" #return;#default error 5.2: switch string failure}
  93. #0 )=-=( ERROR 6 )=-=( 0#
  94. #class tmp open
  95. #unvar tmp
  96. #var tmp 1
  97. #class tmp kill
  98. #if {&{tmp} != 0}
  99. {
  100. error 6.1: class or variable failure
  101. }
  102. #class tmp assign #var tmp 2
  103. #if {$tmp != 2}
  104. {
  105. error 6.2: class or variable failure
  106. }
  107. #class tmp save
  108. #class tmp clear
  109. #if {&{tmp} != 0}
  110. {
  111. error 6.3: class or variable failure
  112. }
  113. #class tmp load
  114. #if {$tmp != 2}
  115. {
  116. error 6.4: class or variable failure
  117. }
  118. #class tmp kill
  119. #if {&{tmp} != 0}
  120. {
  121. error 6.5: class or variable failure
  122. }
  123. #0 )=-=( ERROR 7 )=-=( 0#
  124. #loop 1 2 tmp {#continue;error 7: continue failure}
  125. #0 )=-=( ERROR 8 )=-=( 0#
  126. #kill variable tmp
  127. #if {&{tmp} != 0}
  128. {
  129. error 8: kill variable %* failure
  130. }
  131. #0 )=-=( ERROR 9 )=-=( 0#
  132. #line strip #if {{<128>} != {}}
  133. {
  134. error 9: line strip failure
  135. }
  136. #0 )=-=( ERROR 10 )=-=( 0#
  137. #act {test} {error 10: line ignore failure}
  138. #line gag;
  139. #line ignore #showme <118>Failed test 10: line gag failure
  140. #unact {test}
  141. #0 )=-=( ERROR 11 )=-=( 0#
  142. #parse {abcd} {tmp} {#var tmp ($tmp)}
  143. #if {"$tmp" != "(d)"}
  144. {
  145. error 11: parse failure
  146. }
  147. #0 )=-=( ERROR 12 )=-=( 0#
  148. #path load {#var tmp 1}
  149. #path walk
  150. #if {$tmp != 1}
  151. {
  152. error 12: path load or walk failure
  153. }
  154. #0 )=-=( ERROR 13 )=-=( 0#
  155. #script tmp {echo 'test'}
  156. #if {{$tmp[1]} != {test}}
  157. {
  158. error 13: script failure
  159. }
  160. #0 )=-=( ERROR 14 )=-=( 0#
  161. #regex {test} {te%?t} {#nop}
  162. {
  163. error 14: regex failure
  164. }
  165. #0 )=-=( ERROR 15 )=-=( 0#
  166. #regex {bla} {bli} {error 15.1: regex failure}
  167. #regex {$OK} {$OK} {#nop} {error 15.2: regex failure}
  168. #regex {OK$} {OK$} {error 15.3: regex failure}
  169. #regex {OK$} {OK$$} {error 15.4: regex failure}
  170. #regex {OK$} {OK\$} {#nop} {error 15.5: regex failure}
  171. #0 )=-=( ERROR 16 )=-=( 0#
  172. #0 error 16: repeat failure
  173. #0 )=-=( ERROR 17 )=-=( 0#
  174. #unvar tmp
  175. #1
  176. {
  177. #local tmp 1;
  178. #if {$tmp != 1}
  179. {
  180. error 17: local failure
  181. }
  182. }
  183. #0 )=-=( ERROR 18 )=-=( 0#
  184. #if {${tmp} == 1}
  185. {
  186. error 18: local failure
  187. }
  188. #0 )=-=( ERROR 19 )=-=( 0#
  189. #1
  190. {
  191. #local tmp 2;
  192. #regex {a} {a}
  193. {
  194. #if {$tmp != 2}
  195. {
  196. error 19: local failure
  197. }
  198. }
  199. }
  200. #0 )=-=( ERROR 20 )=-=( 0#
  201. #if {"$arglebargle" != "\$arglebargle"}
  202. {
  203. error 20: unassigned variable
  204. }
  205. #0 )=-=( ERROR 21 )=-=( 0#
  206. #alias {bla} {error 21: unalias malfunction}
  207. #alias {bla%*} {#nop}
  208. #unalias {bla}
  209. bla
  210. #unalias {bla%*}
  211. #0 )=-=( ERROR 22 )=-=( 0#
  212. #class bla open
  213. #var bla 2
  214. #var bli 2
  215. #alias haha hihi
  216. #fun bla blo
  217. #class bla close
  218. #class bla save
  219. #class bla clear
  220. #if {&{bla} != 0} {error 22: #class clear malfunction}
  221. #class bla load
  222. #if {&{bla} == 0} {error 23: #class load malfunction}
  223. #class bla clear
  224. #class bla load
  225. #class bla kill
  226. #0 )=-=( ERROR 24 )=-=( 0#
  227. #if {(513 & ~1) != 512} {error 24.01: #math error}
  228. #if {1 << 1 != 2} {error 24.02: #math error}
  229. #if {1 < 2} {#nop} {error 24.03: #math error}
  230. #if {2 > 1} {#nop} {error 24.04: #math error}
  231. #if {2 % 2} {error 24.05: #math error}
  232. #0 )=-=( ERROR 25 )=-=( 0#
  233. #var tmp 0;
  234. #var bla var
  235. #{$bla} tmp 1
  236. #if {$tmp != 1} {error 25.1: variable command}
  237. #$bla tmp 2
  238. #if {$tmp != 2} {error 25.2: variable command}
  239. #var bla gts
  240. #{$bla} #var tmp 3
  241. #if {$tmp != 3} {error 25.3: variable session}
  242. #$bla #var tmp 4
  243. #if {$tmp != 4} {error 25.4: variable session}
  244. #var bla #math tmp 5
  245. $bla
  246. #if {$tmp != 5} {error 25.5: variable input}
  247. $bla + 1
  248. #if {$tmp != 6} {error 25.6: variable input}
  249. #0 )=-=( ERROR 26 )=-=( 0#
  250. #format bla %X ─
  251. #if {$bla != 2500} {error 26.1: format unicode handling}
  252. #format bla %x 2500
  253. #line sub esc #var bli \u2500
  254. #if {{$bla} != {$bli}} {error 26.2: unicode handling}
  255. #var {bla} {<128>A<138>BC<148>DE<158>FG}
  256. #format tmp %L {$bla}
  257. #if {$tmp != 7} {error 26.6: format L handling}
  258. #format bli {%.5s} {$bla}
  259. #format tmp %L {$bli}
  260. #if {$tmp != 5} {error 26.7: format .+s handling}
  261. #format bli {%.-5s} {$bla}
  262. #format tmp %L {$bli}
  263. #if {$tmp != 5} {error 26.8: format .-s handling}
  264. #format bli {%-20s} {$bla}
  265. #format tmp %L {$bli}
  266. #if {$tmp != 20} {error 26.9: format -s handling}
  267. #format bli {%+20s} {$bla}
  268. #format tmp %L {$bli}
  269. #if {$tmp != 20} {error 26.10: format +s handling}
  270. #format bli {%+20.-3s} {$bla}
  271. #format tmp %L {$bli}
  272. #if {$tmp != 20} {error 26.11: format +.-s handling}
  273. #format tmp %+10s {\e]68;1;SEND;bow\a\e[4mbow\e[24m}
  274. #format tmp %L {$tmp}
  275. #if {$tmp != 10} {error 26.12: format escape code handling}
  276. #line sub esc #format tmp %+10s {\e]68;1;SEND;bow\a\e[4mbow\e[24m}
  277. #format tmp %L {$tmp}
  278. #if {$tmp != 10} {error 26.13: format escape code handling}
  279. #0 )=-=( ERROR 27 )=-=( 0#
  280. #line sub esc #var bla {x\nx}
  281. #if {"$bla" === "x\nx"} {error 27.1: escape handling}
  282. #if {"$bla" != "x\nx"} {error 27.2: escape handling}
  283. #0 )=-=( ERROR 28 )=-=( 0#
  284. #var bla[1] {{bli}{2}}
  285. #var bla[2] {{bli}{3}}
  286. #list bla index bli
  287. #list bla order
  288. #if {$bla[1][bli] != 2} {error 28.01: 2D list handling}
  289. #list bla reverse
  290. #if {$bla[1][bli] != 3} {error 28.02: 2D list handling}
  291. #var bla[1][blo] 4
  292. #list bla[1] get 1 tmp
  293. #if {$tmp != 3} {error 28.03: 2D list handling: $tmp}
  294. #list bla[1] get -1 tmp
  295. #if {$tmp != 4} {error 28.04: 2D list handling: $tmp}
  296. #list bla[1] find {4} tmp
  297. #if {$tmp != 2} {error 28.05: 2D list handling: $tmp}
  298. #list bla[1] set 2 5
  299. #list bla[1] find {5} tmp
  300. #if {$tmp != 2} {error 28.06: 2D list handling: $tmp}
  301. #list bla[1] insert 2 9
  302. #list bla[1] get 2 tmp
  303. #if {$tmp != 9} {error 28.07: 2D list handling: $tmp}
  304. #list bla tokenize 123456789
  305. #list bli create $bla[+2..+4]
  306. #if {&bli[] != 3} {error 28.08: list range handling: &bli[]}
  307. #list bli create $bla[-3..-1]
  308. #if {&bli[] != 3} {error 28.09: list range handling: &bli[]}
  309. #list bla tokenize abcdefghi
  310. #list bla filter {} {d}
  311. #if {"$bla[+4]" != "e"} {error 28.10: list filter handling: "$bla[+4]" != "e"}
  312. #list bla filter {f}
  313. #if {"$bla[+1]" != "f"} {error 28.11: list filter handling: "$bla[+1]" != "f"}
  314. #0 )=-=( ERROR 29 )=-=( 0#
  315. #alias {bla}
  316. {
  317. #var bla 1;
  318. #return;
  319. #var bla 2
  320. }
  321. bla
  322. #if {$bla != 1} {error 29.1: return handling}
  323. #function {bla}
  324. {
  325. #return 1;
  326. #return 2;
  327. }
  328. #if {@bla{} != 1} {error 29.2: return handling}
  329. #function {bla}
  330. {
  331. #if {1} #return 1;
  332. #return 2
  333. }
  334. #if {@bla{} != 1} {error 29.3: return handling}
  335. #function {bla}
  336. {
  337. #regex {1} {1} {#return 1};
  338. #return 2
  339. }
  340. #if {@bla{} != 2} {error 29.4: regex return handling}
  341. #function {bla}
  342. {
  343. #var blo 5;
  344. #return $blo
  345. }
  346. #function {bli}
  347. {
  348. #return @bla{}
  349. }
  350. #if {@bli{} != 5} {error 29.5: regex return handling (@bli{})}
  351. #0 )=-=( ERROR 30 )=-=( 0#
  352. #history insert {#var bla 33}
  353. !
  354. #if {$bla != 33} {error 30.1: history handling}
  355. #0 )=-=( ERROR 30 )=-=( 0#
  356. #var bla {{d}{4}{b}{2}{a}{1}{c}{3}}
  357. #if {$bla[+3] != 3} {error 30.1: table handling ($bla[+3] != 3)}
  358. #if {$bla[-2] != 3} {error 30.2: table handling ($bla[-2] != 3)}
  359. #if {&bla[0] != 0} {error 30.3: table handling (&bla[0] != 0)}
  360. #unvar bla[=d]
  361. #if {&bla[] != 3} {error 30.4: table handling (#unvar bla[=d])}
  362. #if {$bla[=d] != 4} {error 30.5: table handling (\$bla[=d])}
  363. #0 )=-=( ERROR 31 )=-=( 0#
  364. #tab bliblablo
  365. #cursor clear
  366. #cursor set bli
  367. #cursor tab list forward
  368. #cursor get bla
  369. #cursor clear
  370. #if {"$bla" != "bliblablo"} {error 31.1: tab list handling ("$bla" != "bliblablo")}
  371. #untab bliblablo
  372. #cursor set bli
  373. #cursor tab dict forward
  374. #cursor get bla
  375. #cursor clear
  376. #if {"$bla" != "bliaut"} {error 31.2: tab dict handling ("$bla" != "bliaut")}
  377. #0 )=-=( ERROR 32 )=-=( 0#
  378. #map create
  379. #map goto 1
  380. #map move {nw;ne;s;s}
  381. #map exit n weight 0.9
  382. #map find 3
  383. #path save forward bla
  384. #if {"$bla" != "n;n"} {error 32.1: #map find failing exit weight reduction}
  385. #map exit n weight 1.0
  386. #map find 3
  387. #path save forward bla
  388. #if {"$bla" != "nw;ne"} {error 32.2: #map find failing exit weight increase}
  389. #0 )=-=( ERROR 33 )=-=( 0#
  390. #alias {sethash}
  391. {
  392. #format hash %H %1;
  393. #math hash1 $hash % 100;
  394. #math hash2 $hash / 100 % 100;
  395. #var hashtable[$hash1][$hash2][%1] %2
  396. }
  397. #function {gethash}
  398. {
  399. #format hash %H %1;
  400. #math hash1 $hash % 100;
  401. #math hash2 $hash / 100 % 100;
  402. #return $hashtable[$hash1][$hash2][%1]
  403. }
  404. sethash bli hey
  405. sethash bla hi
  406. sethash blo hello
  407. #if {"@gethash{bla}" !== "hi"} {error 33.1: variable hashing support}
  408. #0 )=-=( ERROR 34 )=-=( 0#
  409. #regex {blibla} {%10bli%+3..3a} {#if {"&11" !== "bla"} {error 34.1: regex argument indexing (&11)}}
  410. #regex {blibla} {%.%+%.%*} {#if {"&4" !== "bla"} {error 34.2: regex argument indexing (&4)}}
  411. #regex {blibla} {%99bli%+3..3*} {#if {"&99" !== "bla"} {error 34.3: regex argument indexing (&99)}}
  412. #regex {blibla} {bli%!+} {#if {"&1" !== ""} {error 34.4: regex argument indexing (&1)}}
  413. #regex {blibla} {%+2*%+3*} {#if {"&2" !== "ibl"} {error 34.5: regex argument indexing (&2)}}
  414. #regex {blibla} {%+1..2*} {#if {"&1" !== "bl"} {error 34.6: regex argument indexing (&1)}}
  415. #regex {blibla} {%!+5*%*} {#if {"&1" !== "a"} {error 34.7: regex argument indexing (&1)}}
  416. #regex {blibla} {%+%*} {#if {"&1" !== "b"} {error 34.8: regex argument indexing (&1)}}
  417. #0 )=-=( ERROR 35 )=-=( 0#
  418. #var bla {}
  419. #cat bla bli
  420. #if {{$bla} !== {bli}} {error 35.1: #cat simple}
  421. #cat bla bli
  422. #if {{$bla} !== {blibli}} {error 35.2: #cat simple ($bla) != (blibli)}
  423. #cat bla {{bli}{blo}}
  424. #if {{$bla[bli]} !== {blo}} {error 35.3: #cat table}
  425. #cat bla {{bla}{blu}}
  426. #if {{$bla[bla]} !== {blu}} {error 35.4: #cat table}
  427. #cat bla[bli] {{a}{b}}
  428. #if {{$bla[bli][a]} !== {b}} {error 35.5: #cat table}
  429. #var bla {}
  430. #foreach {bli;bla;blo} {add} #cat bla $add
  431. #if {"$bla" != "bliblablo"} {error 35.6: #foreach cat bliblablo}
  432. #var bla {}
  433. #while {&bla[] < 10}
  434. {
  435. #cat bla {{&bla[]} {x}}
  436. }
  437. #if {&bla[] != 10} {error 35.7: #while bla (&bla[] != 10)}
  438. #0 )=-=( ERROR 36 )=-=( 0#
  439. #var match 0
  440. #line oneshot #act {^^^bla$$$} {#var match 1;#line gag}
  441. #showme bla
  442. #if {$match == 0} {error 36.1: regex ^^^$$$} {#var match 0}
  443. #line oneshot #act {^%.l%.$} {#var match 1;#line gag}
  444. #showme bla
  445. #if {$match == 0} {error 36.2: regex ^%.l%.$} {#var match 0}
  446. #line oneshot #act {^%+1Dl%+1S$} {#var match 1;#line gag}
  447. #showme bla
  448. #if {$match == 0} {error 36.3: regex ^%+1Dl%+1S$} {#var match 0}
  449. #line oneshot #act {^%iBLA$} {#var match 1;#line gag}
  450. #showme bla
  451. #if {$match == 0} {error 36.4: regex ^%iBLA$} {#var match 0}
  452. #line oneshot #act {^%+2wa$} {#var match 1}
  453. #line gag
  454. #showme bla
  455. #if {$match == 0} {error 36.5: regex ^%+2wa$} {#var match 0}
  456. #line oneshot #act {^%+2*a$} {#if {"%1" == "bl"} {#var match 1}}
  457. #line gag
  458. #showme bla
  459. #if {$match == 0} {error 36.6: regex ^%+2*a$} {#var match 0}
  460. #0 )=-=( ERROR 37 )=-=( 0#
  461. #var bla {{dzp}{{id}{dzp}{level}{18}}{xgg}{{id}{xgg}{level}{33}}}
  462. #if {{$bla[]} !== {$bla[%*]}} {error 37.1: {{$bla[] !== {$bla[%*]}}}}
  463. #if {{*bla[]} !== {*bla[%*]}} {error 37.2: {{*bla[] !== {*bla[%*]}}}}
  464. #if {{&bla[]} !== {&bla[%*]}} {error 37.3: {{&bla[] !== {&bla[%*]}}}}
  465. #0 ┌──────────────────────────────────────────────────────────────────────────────┐
  466. #0 │ ██████┐██████┐ █████┐ ███████┐██┐ ██┐ ████████┐███████┐███████┐████████┐ │
  467. #0 │██┌────┘██┌──██┐██┌──██┐██┌────┘██│ ██│ └──██┌──┘██┌────┘██┌────┘└──██┌──┘ │
  468. #0 │██│ ██████┌┘███████│███████┐███████│ ██│ █████┐ ███████┐ ██│ │
  469. #0 │██│ ██┌──██┐██┌──██│└────██│██┌──██│ ██│ ██┌──┘ └────██│ ██│ │
  470. #0 │└██████┐██│ ██│██│ ██│███████│██│ ██│ ██│ ███████┐███████│ ██│ │
  471. #0 │ └─────┘└─┘ └─┘└─┘ └─┘└──────┘└─┘ └─┘ └─┘ └──────┘└──────┘ └─┘ │
  472. #0 └──────────────────────────────────────────────────────────────────────────────┘
  473. #class bla open
  474. #var blabla x
  475. #class bla kill
  476. #action {bla} #nop
  477. #alias {bla} #nop
  478. #button {1;1;2;2} {#nop}
  479. #delay 1000 #nop
  480. #event {GAG SESSION DISCONNECTED} {#nop}
  481. #fun bla {#nop}
  482. #gag bla
  483. #high bla green
  484. #macro \e\e #nop
  485. #pathdir bla bli
  486. #prompt bla bli
  487. #sub bla bli
  488. #tab bla bli
  489. #tick bla {#nop} 1
  490. #var bla bli
  491. #line quiet
  492. {
  493. #act;#alias;#button;#delay;#event;#event %*;#fun;#gag;#high;#macro;#pathdir;#prompt;#sub;#tab;#tick;#var
  494. }
  495. #nop #line quiet #line debug #1 {#if {0} {#nop};#elseif {0} {#nop};#else #switch {1} {#case 0 #nop;#case 1 #continue}}
  496. #unvar bla
  497. #untab bla
  498. #untick bla
  499. #unsub bla
  500. #unprompt bla
  501. #unpathdir bla
  502. #unmacro \e\e
  503. #ungag hrm
  504. #unfun bla
  505. #unhigh bla
  506. #unevent {GAG SESSION CONNECTED}
  507. #undelay %*
  508. #unbutton {1;1;2;2}
  509. #unact bla
  510. #unalias bla
  511. #bell volume 8
  512. #buffer get bla -1 -1;
  513. #cat bla bli
  514. #line quiet #chat init 0
  515. #chat uninit
  516. #cursor get bla
  517. #line quiet #daemon list
  518. #line quiet #dictionary bla
  519. #line quiet #dictionary hello
  520. #draw green tile 1 -1 1 -1
  521. #draw blue red scaled box 1 1 4 4 hello world
  522. #format bla {}
  523. #line quiet #help %*
  524. #history insert bla
  525. #history delete
  526. #info system save
  527. #list bla create {a;b;c}
  528. #kill variable bla
  529. #loop 0 1 bla #nop
  530. #line quiet
  531. {
  532. #map create;
  533. #map goto 1;
  534. #map dig n;
  535. #map destroy world
  536. }
  537. #math bla 2+2
  538. #message all on
  539. #parse {abc} {bla} {#nop}
  540. #path create
  541. #path destroy
  542. #line quiet #port init bla 0
  543. #snoop bla
  544. #bla #kill all
  545. #line quiet #port uninit
  546. #regex {bla} {bla} {#nop} {#nop}
  547. #var bla x
  548. #replace bla x y
  549. #screen get cols bla
  550. #line quiet #split
  551. #unsplit
  552. #format end %U;
  553. #0 )=-=( ERROR 19 )=-=( 0#
  554. #function time
  555. {
  556. #math result ($end - $start) / 1000000.000
  557. }
  558. #if {$error}
  559. {
  560. #draw White Red scroll box 1 1 3 80 End of validation with $error errors.;
  561. #end \
  562. }
  563. {
  564. #delay {0}
  565. {
  566. #info memory;
  567. #info stack;
  568. #draw Yellow Green scroll box 1 1 3 80 End of validation with 0 errors in @time{} seconds.;
  569. #line benchmark {#10000 #math tmp (2 | 1) / 2 + 5};
  570. #end \
  571. }
  572. }