notes return ( )how are we to define the data area for this functionit must contain the parameter and the local variables and as we shall seeno temporary variables are needed the data area must also contain return address in this casethere are two possible points to which we might want to returnthe assignment of fact(xto yand the main program that called fact suppose that we had two labels and that we let the label label be the label of section of code label resultwithin the simulating program let the label be the label of statement label return(result)this reflects convention that the variable to result contains the value to be returned by an invocation of the fact function the return address will be stored as an integer (equal to either or to effect return from recursive call the statement switch(icase goto label case goto abe is executed thusif return is executed to the main program that called factand if = return is simulated to the assignment of the returned value to the variable in the previous execution of fact proving correctness of parenthesis in an expression lab exercise this program takes one mathematical expression and checks whether the opening and closing parenthesis match or not #define leftbracket '{#define rightbracket '}#include main(char *pexpr[ ]printf("enter an expression :")scanf("% ",expr) =exprwhile( !'\ 'if* =leftbracketpush( )if(* =rightbrackett=pop()if( (printf("error:")) ++ lovely professional university