The difficulty of implementing parsers (for the majority of programmers or engineers) is one of the tragedies of computer science. It is a very well developed theory and apparently it is too hard to deliver in a usable form without becoming one of those "to bake an apple pie you need to invent the universe" experiences. I just wanted a pie! Like the html-ish parser in Graphviz:
bison -y -Wno-yacc -dv ../../lib/common/htmlparse.y -o htmlparse.c
../../lib/common/htmlparse.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr]
../../lib/common/htmlparse.y: note: rerun with option '-Wcounterexamples' to generate conflict counterexamples
Noted.This partially explains the success of languages like XML, JSON and YAML as alternatives to writing your own parser.