File tree 5 files changed +21
-13
lines changed
5 files changed +21
-13
lines changed Original file line number Diff line number Diff line change 1
1
[package ]
2
2
name = " lambda_mountain"
3
- version = " 1.11.77 "
3
+ version = " 1.11.78 "
4
4
authors = [" Andrew <andrew@subarctic.org>" ]
5
5
license = " MIT"
6
6
description = " Lambda Mountain"
Original file line number Diff line number Diff line change @@ -82,6 +82,13 @@ fragment < := λ(: l LocalVariable+U64)(: r GlobalVariable+U64). (: (
82
82
(.expression( 'jb ))
83
83
) BranchConditional);
84
84
85
+ fragment branchtrue := λ(: _ Nil). (: (
86
+ (.expression( 'jmp ))
87
+ ) BranchConditional);
88
+ fragment branchfalse := λ(: _ Nil). (: (
89
+ (.expression( 'nop ))
90
+ ) BranchConditional);
91
+
85
92
fragment + := λ(: l LocalVariable+U8)(: r LocalVariable+U8). (: (
86
93
(.program(
87
94
\t 'mov \s (.expression l) \[ '%rbp \] , \s '%al \n
Original file line number Diff line number Diff line change @@ -7,11 +7,22 @@ macro ('match t ps) (tail(
7
7
(match-pats( (uuid term) ps (fail PatternMatchFailure_s) ))
8
8
));
9
9
10
- macro ('match-pats( term ps remainder )) (
10
+ macro ('match-pats( term () remainder )) (
11
11
remainder
12
12
);
13
13
14
- #macro ('match-pats( term matched return () )) ();
14
+ macro ('match-pats( term (ps (lhs rhs)) remainder )) (
15
+ (match-pats(
16
+ term
17
+ ps
18
+ (if (match-pats-condition lhs) rhs remainder)
19
+ ))
20
+ );
21
+
22
+ macro ('match-pats-condition any) (
23
+ (branchtrue())
24
+ );
25
+
15
26
#macro ('match-pats( term matched return (ps (lhs rhs)) )) (
16
27
# (match-pats( term matched return ps ))
17
28
# (if matched () (
Load Diff This file was deleted.
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments