grammar SRT

rule subtitles
  subtitle* <Titlekit::SRT::Subtitles>
end

rule subtitle
  id eol from ' --> ' to coordinates? eol lines eos <Titlekit::SRT::Subtitle>
end

rule id
  number
end

rule from
  timecode
end

rule to
  timecode
end

rule timecode
  hours ':' minutes ':' seconds (',' / '.') fractions <Titlekit::SRT::Timecode>
end

rule hours
  number
end

rule minutes
  number
end

rule seconds
  number
end

rule fractions
  number
end

rule coordinates
  ' X1:' number ' X2:' number ' Y1:' number ' Y2:' number
end

rule lines
  line+
end

rule line
  string (eol / eof)
end

rule eos
  eol+ / eof
end

rule eol
  "\r\n" / "\n" / "\r"
end

rule eof
  !.
end

rule number
  [0-9]+
end

rule string
  (!eol .)+
end

end