exercises introduction to parsing bnf syntax and parsing terminology writing handcrafted parsers simple key-value data parsing playlist data parsing parsing the blocks domain-specific language pythonic parsing with pyparsing quick introduction to pyparsing simple key-value data parsing playlist data parsing parsing the blocks domain-specific language parsing first-order logic lex/yacc-style parsing with ply simple key-value data parsing playlist data parsing parsing the blocks domain-specific language parsing first-order logic summary exercise introduction to gui programming dialog-style programs main-window-style programs creating main window creating custom dialog summary exercises epilogue selected bibliography index xiv