I am trying to convert data from one format to another. Starting with
T:Speed the Plow
|:GABc dedB|dedB dedB|c2ec B2dB|c2A2 A2BA|
GABc dedB|dedB dedB|c2ec B2dB|A2F2 G4:|
|:g2gf gdBd|g2f2 e2d2|c2ec B2dB|c2A2 A2df|
g2gf g2Bd|g2f2 e2d2|c2ec B2dB|A2F2 G4:|
I am trying to convert it to
|SongInfo|Title:"Speed the Plow"|Author:"Trad."|Lyricist:""|Copyright1:""|Copyright2:""
I am assuming I will have two textareas in a form, the data are copied from a clipboard to one of them and split into an array on newline characters. On the last few lines the letters A-G or a-g may or may not be preceded by _, =, or ^ and may or may not be followed by a comma or apostrophe then a (or not) number. The lack of a space after a letter indicates a grouping (beaming).
Does anyone have an example of some parsing code? Just something that looks at the input byte by byte building a token, putting a character back if it belongs to the next token and handling the end of the line and end of data. If someone has a parser for anything, I think I could adapt it.
Thanks in advance.