| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'prop_to_pred/parser.py')
| -rwxr-xr-x | prop_to_pred/parser.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/prop_to_pred/parser.py b/prop_to_pred/parser.py new file mode 100755 index 0000000..7a25561 --- /dev/null +++ b/prop_to_pred/parser.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +import sys +import argparse + + +parser = argparse.ArgumentParser( + description='Property to Predicate parser.' +) + +parser.add_argument( + "predicate_name", + action='store', + type=str, + help="Name of the predicate." +) + +parser.add_argument( + "output_template_file", + action='store', + type=argparse.FileType(mode='w',encoding='UTF-8'), + help="Predicate from Property template file." +) + +parser.add_argument( + "inferred_level", + action='store', + type=argparse.FileType(mode='a',encoding='UTF-8'), + help="Inferred level file." +) + +args = parser.parse_args() + +var_names = list() +var_types = list() + +for line in sys.stdin.readlines(): + line_data = line.strip().split(" ") + print(line_data) + var_name = line_data[0].strip() + var_type = line_data[1].strip() + + args.inferred_level.write("(add_type " + var_type + ")\n") + + var_names.append(var_name) + var_types.append(var_type) + +args.inferred_level.write( + "(add_predicate _" + + args.predicate_name + + " " + + ' '.join(var_types) + + ")\n" +) + +params = "" +for i in range(len(var_types)): + if (var_types[i] == "waveform"): + new_id = ("$" + var_names[i] + ".WFM_ID$") + else: + new_id = ("$" + var_names[i] + ".ID$") + + params += (" " + new_id) + + args.output_template_file.write( + "(add_element " + + var_types[i] + + " " + + new_id + + ")\n" + ) + +args.output_template_file.write( + "(_" + + args.predicate_name + + params + + ")\n" +) + |


