Yes, your code structure is correct.

Recursion, in general, means that some function eventually get called by some combination of functions that it called.

The classic factorial implementation

def factorial(n):
if n <= 1:
return 1
else:
return n*factorial(n-1)

where factorial() calls itself, is an example of

*direct* recursion.

Your test case, where ifCompile() calls statementCompile() calls ifCompile() is an example of

*indirect* recursion.

--Mark