-
Notifications
You must be signed in to change notification settings - Fork 0
/
suspend_test.html
53 lines (41 loc) · 1.35 KB
/
suspend_test.html
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
<html><head>
<script type="application/javascript" src="../js/jquery-1.6.2.min.js"></script>
<script type="application/javascript" src="lexer.js"></script>
<script type="application/javascript" src="listparser.js"></script>
<script type="application/javascript" src="parser.js"></script>
<script type="application/javascript" src="eval.js"></script>
<script type="application/javascript">
var g_interp, g_state;
g_interp = new Interp();
g_interp.global_env['alert'] = native_func(function(interp, args) {
alert(args[0]);
});
g_interp.global_env['prompt'] = native_func(function(interp, args) {
return prompt(args[0]);
});
g_interp.global_env['set_suspend_state'] = native_func(function(interp, args, state) {
g_state = state;
});
inp = '(alert (concat "you pressed " (suspend set_suspend_state) " button"))'
inp = '(letrec (loop (lambda ()'+
'(begin'+
'(alert (concat "you pressed " (suspend set_suspend_state) " button"))'+
'(loop))))'+
'(loop))'
t = parse(inp)
r = g_interp.eval(t);
</script>
</head><body>
<input type="button" id="left" value="왼쪽" />
<input type="button" id="right" value="오른쪽" />
<script type="text/javascript">
$('#left').click(function() {
g_state.set_return_value('left');
g_interp.continue_eval();
});
$('#right').click(function() {
g_state.set_return_value('right');
g_interp.continue_eval();
});
</script>
</body></html>