(streams, rules, stream_pddl, procedure_map, procedure_info, use_functions=True)
| 110 | ################################################## |
| 111 | |
| 112 | def parse_streams(streams, rules, stream_pddl, procedure_map, procedure_info, use_functions=True): |
| 113 | stream_iter = iter(parse_lisp(stream_pddl)) |
| 114 | assert('define' == next(stream_iter)) |
| 115 | pddl_type, pddl_name = next(stream_iter) |
| 116 | assert('stream' == pddl_type) |
| 117 | for lisp_list in stream_iter: |
| 118 | name = lisp_list[0] # TODO: refactor at this point |
| 119 | if name == ':stream': |
| 120 | externals = [parse_stream(lisp_list, procedure_map, procedure_info)] |
| 121 | elif name == ':rule': |
| 122 | externals = [parse_rule(lisp_list, procedure_map, procedure_info)] |
| 123 | elif name == ':function': |
| 124 | if not use_functions: |
| 125 | continue |
| 126 | externals = [parse_function(lisp_list, procedure_map, procedure_info)] |
| 127 | elif name == ':predicate': # Cannot just use args if want a bound |
| 128 | externals = [parse_predicate(lisp_list, procedure_map, procedure_info)] |
| 129 | elif name == ':optimizer': |
| 130 | externals = parse_optimizer(lisp_list, procedure_map, procedure_info) |
| 131 | else: |
| 132 | raise ValueError(name) |
| 133 | for external in externals: |
| 134 | if any(e.name == external.name for e in streams): |
| 135 | raise ValueError('Stream [{}] is not unique'.format(external.name)) |
| 136 | if name == ':rule': |
| 137 | rules.append(external) |
| 138 | external.pddl_name = pddl_name # TODO: move within constructors |
| 139 | streams.append(external) |
| 140 | |
| 141 | def set_unit_efforts(externals): |
| 142 | for external in externals: |
no test coverage detected