For a final project in a robotics class, I suggested that a few students try implementing their own version of a parser-generator program like pymavlink. The students built a simple Python-based system in a few days, which parsed JSON message specifications and generated Python code to parse and serialize a simple variant of MAVLink.
Since then I have added C++ and Java output to the program, and modified it to work with the popular Multiwii Serial Protocol (MSP) message format. The program is extremely simple to use (a single Python script; you don't even have to know or care about Python to use it), and the Python output has been tested in a real-time attitude visualization program that one of the students wrote (shown in the image above). Another student is completing an Android program to do the visualization using the Java output, and I am working up a C++ example on Arduino (parsing messages over the Naze's UART pins.)