Date: Sat, 04 Feb 2017 15:00:00 -0500
<h3>Summary</h3> <p>If you have ever found yourself frustrated by a complicated regular expression or wondered how you can build your own dialect of Python then you need a parser. Dave Beazley and Erik Rose talk about what parsers are, how some of them work, and what you can do with them in this episode.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable.</li> <li>When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at <a href="http://linode.com/podcastinit?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">linode.com/podcastinit</a> and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app.</li> <li>Visit our <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch.</li> <li>To help other people find the show you can leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&uo=6&at=&ct=&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, and tell your friends and co-workers</li> <li>Join our community! Visit <a href="https://discourse.pythonpodcast.com?utm_source=rss&utm_medium=rss">discourse.pythonpodcast.com</a> for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.</li> <li>Your host as usual is Tobias Macey and today I’m interviewing Erik Rose and Dave Beazley about what parsing is, why you might want to use it, and how their respective libraries <a href="https://github.com/erikrose/parsimonious?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Parsimonious</a> and <a href="http://www.dabeaz.com/ply/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PLY</a> make it easy.</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you each start by talking a bit about your respective libraries and what problem you were trying to solve when they were first created?</li> <li>In what ways does a full-fledged parser differ from what a regular expression engine is capable of?</li> <li>What are some of the different high-level approaches to building a parser and when might you want to choose one over the others?</li> <li>I’m sure that when most people hear the term parsing they associate it with reading in a data interchange format such as JSON or CSV. What are some of the more interesting or broadly applicable uses of parsing that might not be as obvious?</li> <li>One term that kept coming up while I was doing research for this interview was “Grammars”. How would you explain that concept for someone who is unfamiliar with it?</li> <li>Once an input has been parsed, what does the resulting data look like and how would a developer interact with it to do something useful?</li> <li>For someone who wants to build their own domain specific language (DSL) what are some of the considerations that they should be aware of to create the grammar?</li> <li>What are some of the most interesting or innovative uses of parsers that you have seen?</li> </ul> <h3>Keep In Touch</h3> <ul> <li>Dave Beazley <ul> <li><a href="https://twitter.com/dabeaz?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@dabeaz</a> on Twitter</li> <li><a href="http://www.dabeaz.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Website</a></li> </ul> </li> <li>Erik Rose <ul> <li><a href="https://twitter.com/ErikRose?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@ErikRose</a> on Twitter</li> <li><a href="https://www.grinchcentral.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Website</a></li> </ul> </li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://gnunn1.github.io/terminix-web/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Terminix</a></li> </ul> </li> <li>Erik <ul> <li><a href="https://en.wikipedia.org/wiki/Riven?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Riven</a></li> <li><a href="http://wiki.scummvm.org/index.php/Datafiles#Riven:_The_Sequel_to_Myst?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ScummVM</a></li> </ul> </li> <li>Dave <ul> <li><a href="https://www.iterm2.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTerm2</a></li> <li><a href="https://kerbalspaceprogram.com/en/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Kerbal Space Program</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="http://www.jdoqocy.com/el117gv30v2IQROJQSOIKKLPJKSR?url=http%3A%2F%2Fshop.oreilly.com%2Fproduct%2F0636920027072.do%3Fcmp%3Daf-prog-books-videos-product_cj_9781449340377_%2525zp&cjsku=SKU-KIT-0636920027072-IP-BUNDLE&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Cookbook</a></li> <li><a href="http://www.dpbolvw.net/4o101lnwtnvAIJGBIKGACDEGDIEB?url=http%3A%2F%2Fwww.thriftbooks.com%2Fw%2Fpython-essential-reference-developers-library_david-m-beazley%2F444962%2F%23isbn%3D0672329786&cjsku=6232362&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Essential Reference</a></li> <li><a href="https://github.com/mozilla/fathom?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Fathom</a></li> <li><a href="http://www.swig.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SWIG</a></li> <li><a href="https://en.wikipedia.org/wiki/Windows_Script_Host?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Windows Scripting Host</a></li> <li><a href="https://en.wikipedia.org/wiki/Parsing_expression_grammar?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PEG</a> (Brian Foord)</li> <li><a href="http://amzn.to/2l8aeNI?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Parsing Techniques by Grune and Jacobs</a></li> <li><a href="https://en.wikipedia.org/wiki/Principles_of_Compiler_Design?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Dragon Book</a></li> <li><a href="http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Stack Overflow HTML regex parsing</a></li> <li><a href="https://en.wikipedia.org/wiki/Earley_parser?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Earley parsing</a></li> <li><a href="https://pypi.python.org/pypi/spark_parser?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SPARK</a></li> <li>Hy-lang <ul> <li><a href="http://docs.hylang.org/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Docs</a></li> <li><a href="https://www.pythonpodcast.com/episode-23-hylang-core-developers/?utm_source=rss&utm_medium=rss">Interview</a></li> </ul> </li> <li><a href="http://blog.moertel.com/posts/2013-06-12-recursion-to-iteration-4-trampolines.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Trampolining</a></li> <li><a href="https://en.wikipedia.org/wiki/Lisp_(programming_language)?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Lisp</a></li> <li><a href="http://www.nltk.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">NLTK</a></li> <li><a href="https://github.com/dabeaz/sly?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SLY</a></li> <li><a href="https://dxr.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">DXR</a></li> <li><a href="http://llvm.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">LLVM</a></li> <li><a href="http://numba.pydata.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Numba</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fepisode-95-parsing-and-parsers-with-dave-beazley-and-erik-rose%2F&action_name=Parsing+and+Parsers+with+Dave+Beazley+and+Erik+Rose+-+Episode+95&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>