PROGRAM { Program PROGRAM-NAME identifier Sample1 FUNCTION-DEFINITIONS FUNCTION-DEFINITIONS FUNCTION-DEFINITION { Function FUNCTION-NAME identifier facto ARGUMENTS ARGUMENTS ARGUMENT identifier VAL STATEMENTS STATEMENT IF-STMT { if EXPRESSION { COMPARISON-OPERATOR < PARAMETER identifier VAL PARAMETER NUMBER integer 0 } then STATEMENTS STATEMENT ASSIGNMENT-STMT { = identifier retVal PARAMETER NUMBER integer -1 } else STATEMENTS STATEMENTS STATEMENT ASSIGNMENT-STMT { = identifier retVal PARAMETER NUMBER integer 1 } STATEMENT WHILE-STMT { while EXPRESSION { COMPARISON-OPERATOR > PARAMETER identifier VAL PARAMETER NUMBER integer 0 } do STATEMENTS STATEMENTS STATEMENT ASSIGNMENT-STMT { = identifier retVal PARAMETER FUNCTION-CALL { PREDEFINED-FUNCTION * PARAMETERS PARAMETERS PARAMETERS PARAMETER identifier retVal PARAMETER identifier VAL } } STATEMENT ASSIGNMENT-STMT { = identifier VAL PARAMETER FUNCTION-CALL { PREDEFINED-FUNCTION - PARAMETERS PARAMETERS PARAMETERS PARAMETER identifier VAL PARAMETER NUMBER integer 1 } } } } return RETURN-ARG identifier retVal } STATEMENTS STATEMENT FUNCTION-CALL { PREDEFINED-FUNCTION print PARAMETERS PARAMETERS PARAMETER FUNCTION-CALL { FUNCTION-NAME identifier facto PARAMETERS PARAMETERS PARAMETER NUMBER integer 999 } } } =======The following is the output of the symbol table as the data appears in the table======= ---------------------------------------------------------------------------------------------- TOKEN NAME IDENTIFIER TYPE IDENTIFIER VALUE ---------------------------------------------------------------------------------------------- facto function-name function-name VAL argument expression-id expression-id argument assignment-id argument retVal assignment-id assignment-id assignment-id argument return-arg Sample1 program-name