[docs]@staticmethoddefparse(definition_output:DefinitionParserOutput,path):specification=definition_output.specificationsymbol_table=definition_output.symbol_tableifInstructionParser.keywordinspecification:iflen(specification[InstructionParser.keyword].keys())>1:logging.warning(f"InstructionParser: multiple instructions were listed in the specification (under keys "f"{str(list(specification[InstructionParser.keyword].keys()))[1:-1]}). ""These instructions are independent and results from one instruction are not available to others. ""If this is the intended behavior, please ignore this warning. If the output of one instruction is needed for the ""other, please use separate YAML specifications and separate runs to perform the analysis.")forkeyinspecification[InstructionParser.keyword]:asserttype(specification[InstructionParser.keyword][key])==dict,f"InstructionParser: instructions are incorrectly defined. Please make sure each instruction is defined under a unique keyword, like this:\n" \
f"instructions:\n" \
f" my_instruction:\n" \
f" type: InstructionType\n" \
f" ... other parameters\n\n" \
f"Found keyword '{key}' containing '{specification[InstructionParser.keyword][key]}', which is a {type(specification[InstructionParser.keyword][key]).__name__}, " \
f"expected a dictionary instead."specification[InstructionParser.keyword][key],symbol_table= \
InstructionParser.parse_instruction(key,specification[InstructionParser.keyword][key],symbol_table,path)else:specification[InstructionParser.keyword]={}returnsymbol_table,specification[InstructionParser.keyword]