mirror of
https://github.com/louisrubet/rpn
synced 2024-12-28 09:58:52 +01:00
709 lines
7.3 KiB
Markdown
709 lines
7.3 KiB
Markdown
# BRANCH
|
|
|
|
`default del`
|
|
|
|
## if then else end (1)
|
|
`1 if then 'ok' end`
|
|
|
|
-> stack should be 'ok'
|
|
|
|
`del`
|
|
|
|
## if then else end (2)
|
|
|
|
`1 if 'before' then 'ok' end`
|
|
|
|
-> stack should be 'before', 'ok'
|
|
|
|
`del`
|
|
|
|
## if then else end (3)
|
|
|
|
`0 if then 'ok' end`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## if then else end (4)
|
|
|
|
`0 if then 'ok' end`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## if then else end (5)
|
|
|
|
`1 if then 'ok' else 'KO' end`
|
|
|
|
-> stack should be 'ok'
|
|
|
|
`del`
|
|
|
|
## if then else end (6)
|
|
|
|
`1 if then 'ok' 'dokey' else 'KO' end`
|
|
|
|
-> stack should be 'ok', 'dokey'
|
|
|
|
`del`
|
|
|
|
## if then else end (7)
|
|
|
|
`0 if then 'ok' else 'KO' end`
|
|
|
|
-> stack should be 'KO'
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (1)
|
|
|
|
`if then end`
|
|
|
|
-> error should be 2
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (2)
|
|
|
|
`0 if then`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (3)
|
|
|
|
`0 if end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (4)
|
|
|
|
`0 if end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (5)
|
|
|
|
`then`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (6)
|
|
|
|
`1 if`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (7)
|
|
|
|
`else`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
|
|
## if then else end - error case (8)
|
|
|
|
`end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## if then else end - error case (9)
|
|
|
|
`"1" if then end`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## ift (1)
|
|
|
|
`1 'ok' ift`
|
|
|
|
-> stack should be 'ok'
|
|
|
|
`del`
|
|
|
|
## ift (2)
|
|
|
|
`0 'ok' ift`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## ift (3)
|
|
|
|
`'ok' ift`
|
|
|
|
-> error should be 2
|
|
|
|
-> stack size should be 1
|
|
|
|
`del`
|
|
|
|
## ift (4)
|
|
|
|
`ift`
|
|
|
|
-> error should be 2
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## ifte (1)
|
|
|
|
`1 'ok' 'nok' ifte`
|
|
|
|
-> stack should be 'ok'
|
|
|
|
`del`
|
|
|
|
## ifte (2)
|
|
|
|
`0 'ok' 'nok' ifte`
|
|
|
|
-> stack should be 'nok'
|
|
|
|
`del`
|
|
|
|
## ifte (3)
|
|
|
|
`'ok' 'nok' ifte`
|
|
|
|
-> error should be 2
|
|
|
|
-> stack size should be 2
|
|
|
|
`del`
|
|
|
|
## ifte (4)
|
|
|
|
`'nok' ifte`
|
|
|
|
-> error should be 2
|
|
|
|
-> stack size should be 1
|
|
|
|
`del`
|
|
|
|
## ifte (5)
|
|
|
|
`ifte`
|
|
|
|
-> error should be 2
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## start next (1)
|
|
|
|
`1 2 start 0 next`
|
|
|
|
-> stack should be 0, 0
|
|
|
|
`del`
|
|
|
|
## start next (2)
|
|
|
|
`2 1 start 0 next`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## start next (3)
|
|
|
|
`-2 -1 start 0 next`
|
|
|
|
-> stack should be 0, 0
|
|
|
|
`del`
|
|
|
|
## start next (4)
|
|
|
|
`-1 -2 start 0 next`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## start next (5)
|
|
|
|
`1 1 start 0 next`
|
|
|
|
-> stack should be 0
|
|
|
|
`del`
|
|
|
|
## start next - cloning objects (1)
|
|
|
|
`1 2 start 'ok' next`
|
|
|
|
-> stack should be 'ok', 'ok'
|
|
|
|
`del`
|
|
|
|
## start next - cloning objects (2)
|
|
|
|
`1 2 start ok next`
|
|
|
|
-> stack should be 'ok', 'ok'
|
|
|
|
`del`
|
|
|
|
## start next - cloning objects (3)
|
|
|
|
`1 2 start "ok" next`
|
|
|
|
-> stack should be "ok", "ok"
|
|
|
|
`del`
|
|
|
|
## start next - cloning objects (4)
|
|
|
|
`1 2 start (1,2) next`
|
|
|
|
-> stack should be (1,2), (1,2)
|
|
|
|
`del`
|
|
|
|
## start next - cloning objects (5)
|
|
|
|
`1 2 start «ok» next`
|
|
|
|
-> stack should be «ok», «ok»
|
|
|
|
`del`
|
|
|
|
## start next - error case (1)
|
|
|
|
`1 start next`
|
|
|
|
-> error should be 2
|
|
|
|
`del`
|
|
|
|
## start next - error case (2)
|
|
|
|
`start next`
|
|
|
|
-> error should be 2
|
|
|
|
`del`
|
|
|
|
## start next - error case (3)
|
|
|
|
`start`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## start next - error case (4)
|
|
|
|
`next`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## start next - error case (5)
|
|
|
|
`"1" 2 start next`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## start next - error case (6)
|
|
|
|
`1 "2" start next`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## for next (1)
|
|
|
|
`23 27 for i i next`
|
|
|
|
-> stack should be 23, 24, 25, 26, 27
|
|
|
|
`del`
|
|
|
|
## for next (2)
|
|
|
|
`1 1 for i i next`
|
|
|
|
-> stack should be 1
|
|
|
|
`del`
|
|
|
|
## for next (3)
|
|
|
|
`27 23 for i i next`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## for next (4)
|
|
|
|
`-2 -1 for i i next`
|
|
|
|
-> stack should be -2, -1
|
|
|
|
`del`
|
|
|
|
## for next (5)
|
|
|
|
`-1 -2 for i i next`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## for next - loop variable overwrite
|
|
|
|
`123 'i' sto 1 2 for i i next`
|
|
|
|
-> stack should be 1, 2
|
|
|
|
`del`
|
|
|
|
## nested for next
|
|
|
|
`1 2 for i 0 1 for j i (1,0) * j (0,1) * + next next`
|
|
|
|
-> stack should be (1,0), (1,1), (2,0), (2,1)
|
|
|
|
`del`
|
|
|
|
## for next - error case (1)
|
|
|
|
`1 for i i next`
|
|
|
|
-> error should be 2
|
|
|
|
`del`
|
|
|
|
## for next - error case (2)
|
|
|
|
`for i i next`
|
|
|
|
-> error should be 2
|
|
|
|
`del`
|
|
|
|
## for next - error case (3)
|
|
|
|
`"1" 2 for i i next`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## for next - error case (4)
|
|
|
|
`1 "2" for i i next`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## for next - error case (5)
|
|
|
|
`1 2 for i i`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## for next - error case (6)
|
|
|
|
`for`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## for step (1)
|
|
|
|
`23 27 for i i 1 step`
|
|
|
|
-> stack should be 23, 24, 25, 26, 27
|
|
|
|
`del`
|
|
|
|
## for step (2)
|
|
|
|
`0 1 for i i 0.25 step`
|
|
|
|
-> stack should be 0, 0.25, 0.5, 0.75, 1
|
|
|
|
`del`
|
|
|
|
## for step (3)
|
|
|
|
`-1 0 for i i 0.25 step`
|
|
|
|
-> stack should be -1, -0.75, -0.5, -0.25, -0
|
|
|
|
`del`
|
|
|
|
## for step (4)
|
|
|
|
`0 -1 for i i 0.25 step`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## for step (5)
|
|
|
|
`0 -1 for i i -0.25 step`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## for step (6) - check boundary integration
|
|
|
|
`1 2 for i i 0.2 step`
|
|
|
|
-> stack should be 1, 1.2, 1.4, 1.6, 1.8, 2
|
|
|
|
`del`
|
|
|
|
## for step (7) - check boundary integration
|
|
|
|
`1 2 for i i 0.5 step`
|
|
|
|
-> stack should be 1, 1.5, 2
|
|
|
|
`del`
|
|
|
|
## nested for step
|
|
|
|
`0 2 for i 0 6 for j i (1,0) * j (0,1) * + 3 step 2 step`
|
|
|
|
-> stack should be (0,0), (0,3), (0,6), (2,0), (2,3), (2,6)
|
|
|
|
`del`
|
|
|
|
## for step - error case (1)
|
|
|
|
`0 1 for i i "0.5" step`
|
|
|
|
-> error should be 3
|
|
|
|
`del`
|
|
|
|
## for step - error case (2)
|
|
|
|
`step`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until (1)
|
|
|
|
`do 'ok' until 1 end`
|
|
|
|
-> stack should be 'ok'
|
|
|
|
`del`
|
|
|
|
## do..until (2)
|
|
|
|
`do until 1 end`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## do..until (3)
|
|
|
|
`3 do 1 - 'ok' swap dup until 0 == end drop`
|
|
|
|
-> stack should be 'ok', 'ok', 'ok'
|
|
|
|
`del`
|
|
|
|
## do..until (4)
|
|
|
|
`1 'a' sto do a 1 + 'a' sto until a 3 > end a`
|
|
|
|
-> stack should be 4
|
|
|
|
`del`
|
|
|
|
## nexted do..until
|
|
|
|
`1 'i' sto do 0 'j' sto do i (1,0) * j (0,1) * + 1 'j' sto+ until j 1 > end 1 'i' sto+ until i 2 > end`
|
|
|
|
-> stack should be (1,0), (1,1), (2,0), (2,1)
|
|
|
|
`del`
|
|
|
|
## do..until error case (1)
|
|
|
|
`do`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (2)
|
|
|
|
`do 8 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (3)
|
|
|
|
`until`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (4)
|
|
|
|
`do 3 until`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (5)
|
|
|
|
`until 1 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (6)
|
|
|
|
`do 3 repeat 8 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## do..until error case (7)
|
|
|
|
`do 3 until 8 until 9 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat (1)
|
|
|
|
`while 0 repeat ok end`
|
|
|
|
-> stack size should be 0
|
|
|
|
`del`
|
|
|
|
## while..repeat (2)
|
|
|
|
`2 while dup 0.1 > repeat dup 2 / end`
|
|
|
|
-> stack should be 2, 1, 0.5, 0.25, 0.125, 0.0625
|
|
|
|
`del`
|
|
|
|
## while..repeat (3)
|
|
|
|
`0 'a' sto while a 3 < repeat a 1 + 'a' sto 100 0 a for b b + next end`
|
|
|
|
-> stack should be 101, 103, 106
|
|
|
|
`del`
|
|
|
|
## nested while .. repeat
|
|
|
|
`1 'i' sto while i 2 <= repeat 0 'j' sto while j 1 <= repeat i (1,0) * j (0,1) * + 1 'j' sto+ end 1 'i' sto+ end`
|
|
|
|
-> stack should be (1,0), (1,1), (2,0), (2,1)
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (1)
|
|
|
|
`while`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (2)
|
|
|
|
`while 3 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (3)
|
|
|
|
`repeat`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (4)
|
|
|
|
`while 1 repeat`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (5)
|
|
|
|
`repeat 1 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (6)
|
|
|
|
`while 3 repeat 8 repeat 9 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|
|
|
|
## while..repeat error case (7)
|
|
|
|
`while 3 until 8 end`
|
|
|
|
-> error should be 11
|
|
|
|
`del`
|