File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ fn main() {
11
11
println ! ( "{}" , output. unwrap( ) ) ;
12
12
}
13
13
14
+ #[ derive( Clone ) ]
14
15
struct Compiler {
15
16
lambda_id : usize ,
16
17
heap_addr : usize ,
@@ -19,17 +20,20 @@ struct Compiler {
19
20
}
20
21
21
22
impl Compiler {
23
+ fn new ( ) -> Self {
24
+ Compiler {
25
+ lambda_id : 0 ,
26
+ heap_addr : 0 ,
27
+ functions : Vec :: new ( ) ,
28
+ variables : IndexMap :: new ( ) ,
29
+ }
30
+ }
22
31
fn build ( code : & str ) -> Option < String > {
23
32
let expr = tokenize ( code) ?
24
33
. iter ( )
25
34
. map ( |code| Expr :: parse ( code) )
26
35
. collect :: < Option < Vec < _ > > > ( ) ?;
27
- let mut compiler = Compiler {
28
- lambda_id : 0 ,
29
- heap_addr : 0 ,
30
- functions : Vec :: new ( ) ,
31
- variables : IndexMap :: new ( ) ,
32
- } ;
36
+ let mut compiler = Compiler :: new ( ) ;
33
37
let code = expr
34
38
. iter ( )
35
39
. map ( |x| x. compile ( & mut compiler) )
You can’t perform that action at this time.
0 commit comments