From 5908e189b2dfae5cc313bdb07de1baa1c1a47fa5 Mon Sep 17 00:00:00 2001 From: Linda Njau Date: Thu, 1 Aug 2024 14:55:05 +0300 Subject: [PATCH] Update operand validation --- src/sail_json_backend/json.ml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/sail_json_backend/json.ml b/src/sail_json_backend/json.ml index f2cf8c076..13e9f0847 100644 --- a/src/sail_json_backend/json.ml +++ b/src/sail_json_backend/json.ml @@ -239,29 +239,31 @@ let filter_non_operands components = in aux [] components -let extract_operands k regex components = +let extract_operands k components = let rec aux acc = function | [] -> List.rev acc | hd :: tl -> - if Str.string_match regex hd 0 then ( + if Str.string_match (Str.regexp ".+(\\(.*\\))") hd 0 then ( let operand = Str.matched_group 1 hd in + let elements = Str.split (Str.regexp ",") operand in try - let comma_index = String.index operand ',' in - debug_print ("Operand before trimming: " ^ operand); - let trimmed = String.sub operand 0 comma_index in - debug_print ("Final trimmed operand: " ^ trimmed); let inputl = Hashtbl.find inputs k in if List.mem trimmed inputl then aux (trimmed :: acc) tl else aux acc tl with Not_found -> aux (operand :: acc) tl + let acc = + List.fold_left (fun acc element -> if List.mem element inputl then element :: acc else acc) acc elements + in + + aux acc tl + with Not_found -> aux acc tl ) else aux acc tl in aux [] components let extract_and_map_operands k components = - let regex = Str.regexp ".+(\\(.*\\))" in let filtered_components = filter_non_operands components in - let operandl = extract_operands k regex filtered_components in + let operandl = extract_operands k filtered_components in let opmap = List.combine (Hashtbl.find inputs k) (Hashtbl.find sigs k) in let operand_with_type = List.map