def p_formal_argument(self, p):
     """formal_argument : return_type ID"""
     print("""formal_argument -> return_type ID""")
     p[0] = Nonterminal()
     p[0].code = CodeGenerator.popVariable(self, p[2])
     p[0].t = 1
 def p_formal_arguments_list_1(self, p):
     """formal_arguments_list : formal_argument"""
     print("""formal_arguments_list -> formal_argument""")
     p[0] = Nonterminal()
     p[0].code = p[1].code
     p[0].t = 1
 def p_formal_arguments_e(self, p):
     """formal_arguments : """
     print("""formal_arguments ->/* Lambda */""")
     p[0] = Nonterminal()
     p[0].t = 0
     p[0].code = ""
 def p_formal_arguments_list(self, p):
     """formal_arguments_list : formal_arguments_list COMMA formal_argument"""
     print("""formal_arguments_list -> formal_arguments_list COMMA formal_argument""")
     p[0] = Nonterminal()
     p[0].code = p[3].code + p[1].code
     p[0].t = p[1].t + p[3].t
 def p_formal_arguments(self, p):
     """formal_arguments : formal_arguments_list"""
     print("""formal_arguments -> formal_arguments_list""")
     p[0] = Nonterminal()
     p[0].code = "// fetching arguments\n\n" + p[1].code
     p[0].t = p[1].t