Tried to write yacc/lex for that back in the day of bang addresses and decnet :: chains. What actually killed me was dealing with header line folding. I just couldn't wrap my head around the tokens and the value of CRLF and dealing with pushing things back on the input buffer.
Some things are a "you have to be this high" test to get in board and I wasn't.