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