public string ParseInstruction() { if (RetValue.IsValue() && RetValue.BaseType.IsPrimitiveType() && RetValue.BaseType.CheckedCast <LPrimitiveType>().Type == LPrimitiveTypes.@void) { return($"\t{LKeywords.Ret} {LKeywords.Void}"); } StringBuilder sb = new StringBuilder("\t"); sb.Append(LKeywords.Ret).Append(" "); sb.Append(RetValue.ParseType()).Append(" ").Append(LRefHelper.GetValueOrIdentifierOf(RetValue)); return(sb.ToString()); }
/// <summary> /// Returns identifier of reference. /// </summary> /// <param name="reference"></param> /// <returns>identifier</returns> public static string GetIdentifierOf(LBaseRef reference) { if (reference.IsValue()) { LValueRef value = (LValueRef)reference; return(value.Identifier !); } else if (reference.IsPointer()) { LPointerRef pointer = (LPointerRef)reference; return(pointer.Identifier); } else if (reference.IsArray()) { LArrayRef array = (LArrayRef)reference; return(array.Identifier); } else if (reference.IsVector()) { LVectorRef vector = (LVectorRef)reference; return(vector.Identifier !); } throw new Exception("unknown reference."); }