-
Notifications
You must be signed in to change notification settings - Fork 9
/
lib.yasm
31 lines (23 loc) · 823 Bytes
/
lib.yasm
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
#define undefined u
#define err_if_not(expr) undefined/=expr
#define continue_if(expr) undefined/=expr
#define pop_char(stack) stack-stack--
#define push_char(stack, c) stack+=c
#define dequeue_char(q) q-q--
#define enqueue_char(q, c) q=c+q
#define set_add_char(set, c) set+=c
#define set_find_char(set, c) (set-c)!=set
#define goto_if(expr, true_branch, false_branch) {
true_branch+(expr)*eval(false_branch-true_branch)
}
#define select_num_p(expr, tval, fval) {
fval+(expr)*eval(tval-fval)
}
#define select_num_s(expr, tval, fval) {
fval-(expr)*eval(fval-tval)
}
#define parse_digit(input_char, output_num) {
output_num=5*(input_char>4)
output_num+=2*(input_char>(output_num+1))
output_num+=input_char>output_num+input_char>(output_num+1)
}