private FuncItem createFunction(GrammarParser.Def_one_functionContext context) { String name = context.Identifier().GetText();; DataType returnDataType = DataType.Int; List <FunctionParameter> parameters = new List <FunctionParameter>(); if (context.function_return_data_typ().Data_type_void() != null) { returnDataType = DataType.Void; } else if (context.function_return_data_typ().data_type().Data_type_bool() != null) { returnDataType = DataType.Bool; } else if (context.function_return_data_typ().data_type().Data_type_double() != null) { returnDataType = DataType.Double; } GrammarParser.ParametersContext paramContext = context.parameters(); while (paramContext != null && paramContext.Identifier() != null) { DataType dType = DataType.Int; if (paramContext.data_type().Data_type_double() != null) { dType = DataType.Double; } else if (paramContext.data_type().Data_type_bool() != null) { dType = DataType.Bool; } parameters.Add(new FunctionParameter(paramContext.Identifier().GetText(), dType)); paramContext = paramContext.parameters(); } return(new FuncItem(name, returnDataType, instructionCount, parameters)); }