block parsing recursion expansion