This function operates on the AST level; meaning, it takes in a
building_blocks.ComputationBuildingBlock as an argument and
returns one as well. replace_intrinsics_with_bodies is intended to be the
standard reduction function, which will reduce all currently implemented
intrinsics to their bodies.
Notice that the success of this function depends on the contract of
intrinsic_bodies.get_intrinsic_bodies, that the dict returned by that
function is ordered from more complex intrinsic to less complex intrinsics.
Args
comp
Instance of building_blocks.ComputationBuildingBlock in which we
wish to replace all intrinsics with their bodies.
context_stack
Instance of context_stack_base.ContextStack, the context
stack to use for the bodies of the intrinsics.
Returns
Instance of building_blocks.ComputationBuildingBlock with all
the intrinsics from intrinsic_bodies.py inlined with their bodies, along
with a Boolean indicating whether there was any inlining in fact done.
Raises
TypeError
If the types don't match.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]