Below is a general description of the general NUKE Animation Curve format, using AUgmented Backhaus Naur Form.
See also Roto serialisation format
int
float
interpolation = K / L / S / R / C
; Constant / Linear / Smooth / Catmull-Rom / Cubic
extrapolation = k / l
; Constant / Linear
x-value = float
y-value = float
l-slope = float
r-slope = float
l-angle = float
r-angle = float
animation-curve-key = [SP interpolation] [SP extrapolation] [SP "x" x-value] SP y-value [SP "s" l-slope] [SP "t" r-slope] [SP "u" l-angle] [SP "v" r-angle]
animation-curve-key-list = 0*animation-curve-key
; This is basically just a list of floats, which may or may not be prepended by string constants.
;
; Each key will have one 'core' float, which is the y-value. This might
; be preceded by the x value, e.g. "x10". If not, then the new x value
; is linearly extrapolated from the last two. If no x-value is specified
; for the first key, it uses 0; if none for the second it increments the
; first key.
;
; Each key then may have some tangent data. If an l-slope is set and
; no r-slope then the lslope should be used for both. l-a and r-a default to 1.
animation-curve = begin curve-expression [SP "i" / SP "I"] animation-curve-key-list end
; "i" indicates invisible, "I" indicates trace only