diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/eurm.ml | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/eurm.ml b/src/eurm.ml index 1e6d7d2..2b5def9 100644 --- a/src/eurm.ml +++ b/src/eurm.ml | |||
@@ -12,7 +12,7 @@ let compile_preprocess = | |||
12 | | None -> let new_id = string_of_int (Hashtbl.length label_table) | 12 | | None -> let new_id = string_of_int (Hashtbl.length label_table) |
13 | in Hashtbl.add label_table name new_id; new_id | 13 | in Hashtbl.add label_table name new_id; new_id |
14 | and aux = function | 14 | and aux = function |
15 | | [] -> [] | 15 | | [] -> [ Label("end") ] |
16 | | Comment(_) :: tail -> aux tail | 16 | | Comment(_) :: tail -> aux tail |
17 | | Label(name) :: tail -> Label(id_from_name name) :: aux tail | 17 | | Label(name) :: tail -> Label(id_from_name name) :: aux tail |
18 | | EqPredicate(i, j, name) :: tail -> EqPredicate(i, j, id_from_name name) :: aux tail | 18 | | EqPredicate(i, j, name) :: tail -> EqPredicate(i, j, id_from_name name) :: aux tail |
@@ -109,6 +109,7 @@ let compile_stage2 eurmcmds state = | |||
109 | Label(error_label); Quit; Label(end_label); Copy(r1, diff_reg) ], | 109 | Label(error_label); Quit; Label(end_label); Copy(r1, diff_reg) ], |
110 | add_reg_label state 3 3 | 110 | add_reg_label state 3 3 |
111 | 111 | ||
112 | | Quit -> [ Goto("end") ], state | ||
112 | | any -> [ any ], state | 113 | | any -> [ any ], state |
113 | 114 | ||
114 | in apply_transform (transform) state eurmcmds | 115 | in apply_transform (transform) state eurmcmds |
@@ -135,9 +136,6 @@ let compile_stage4 eurmcmds state = | |||
135 | | Label(_) -> | 136 | | Label(_) -> |
136 | let dummy_reg = state.max_reg + 1 | 137 | let dummy_reg = state.max_reg + 1 |
137 | in [ URMZero(dummy_reg) ], add_reg_label state 1 0 | 138 | in [ URMZero(dummy_reg) ], add_reg_label state 1 0 |
138 | | Quit -> | ||
139 | let dummy_reg = state.max_reg + 1 | ||
140 | in [ URMZero(dummy_reg); URMJump(dummy_reg, dummy_reg, -1) ], add_reg_label state 1 0 | ||
141 | | _ -> failwith "Invalid_argument" | 139 | | _ -> failwith "Invalid_argument" |
142 | in build_label_table eurmcmds; apply_transform (transform) state eurmcmds | 140 | in build_label_table eurmcmds; apply_transform (transform) state eurmcmds |
143 | 141 | ||