-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathrepl.expect
executable file
·106 lines (86 loc) · 1.94 KB
/
repl.expect
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env expect
spawn [lindex $argv 0]
set timeout 5
set prompt {> }
expect -re $prompt
send "1 2 +\r"
expect -re $prompt
send ":stack\r"
expect {
"3" {}
timeout { exit 1 }
}
expect -re $prompt
send "12 *\r"
expect -re $prompt
send "print\r"
expect {
"36" {}
timeout { exit 1 }
}
expect -re $prompt
send "fact := \[\[pop 0 =\] \[pop pop 1\] \[ \[dup 1 -\] dip dup i *\] ifte\] dup i\r"
expect -re $prompt
send "10 fact\r"
expect -re $prompt
send ":st\r"
expect {
"3628800" {}
timeout { exit 1 }
}
expect -re $prompt
send "\[\"foo\" \"bar\" strcat\] \[strlen\] b\r"
expect -re $prompt
send "dup print\r"
expect {
"6" {}
timeout { exit 1 }
}
expect -re $prompt
send "1 swap - print\r"
expect {
-exact "-5" {}
timeout { exit 1 }
}
expect -re $prompt
send "even := 2 % 0 =\r"
expect -re $prompt
send "odd := even not\r"
expect -re $prompt
send "3 odd 2 even and print\r"
expect {
"true" {}
timeout { exit 1 }
}
expect -re $prompt
send "prime := \[dup even \[3 <\] dip or\] \[2 =\] \[prime_trial_division\] ifte\r"
expect -re $prompt
send "prime_trial_division := 3 \[\[pop % null\] \[pop =\] \[\[2 +\] dip x\] ifte\] x\r"
expect -re $prompt
send "\[2 3 4 5 6 7 8 9 10 11 12 13\] \[prime\] map print\r"
expect {
"\\\[true true false true false true false false false true false true\\\]" {}
timeout { exit 1 }
}
expect -re $prompt
send "sum := 0 \[+\] fold\r"
expect -re $prompt
send "div-3-5 := \[dup \[3 % null\] dip 5 % null or\] filter\r"
expect -re $prompt
send "up-to := pred \[\[\]\] \[cons\] primrec\r"
expect -re $prompt
send "10 up-to div-3-5 sum print\r"
expect {
"23" {}
timeout { exit 1 }
}
expect -re $prompt
send "next-fib := dup \[+\] dip swap\r"
expect -re $prompt
send "add-if-even := \[even\] \[dup \[rotate\] dip + rotate\] \[\] ifte\r"
expect -re $prompt
send "0 1 1 \[100 >\] \[pop pop\] \[next-fib add-if-even\] \[i\] genrec print\r"
expect {
"188" {}
timeout { exit 1 }
}