Parsing and Parsers with Dave Beazley and Erik Rose

The Python Podcast.__init__

Episode | Podcast

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.&#95;&#95;init&#95;&#95;, 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&#8217;re ready to launch your next project you&#8217;ll need somewhere to deploy it. Check out Linode at <a href="http://linode.com/podcastinit?utm_source=rss&amp;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&amp;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&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;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&amp;utm_source=rss&amp;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&amp;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&#8217;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&amp;utm_medium=rss" rel="noopener" target="_blank">Parsimonious</a> and <a href="http://www.dabeaz.com/ply/?utm_source=rss&amp;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&#8217;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 &#8220;Grammars&#8221;. 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&amp;utm_medium=rss" rel="noopener" target="_blank">@dabeaz</a> on Twitter</li> <li><a href="http://www.dabeaz.com/?utm_source=rss&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">@ErikRose</a> on Twitter</li> <li><a href="https://www.grinchcentral.com/?utm_source=rss&amp;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&amp;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&amp;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&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">iTerm2</a></li> <li><a href="https://kerbalspaceprogram.com/en/?utm_source=rss&amp;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&amp;cjsku=SKU-KIT-0636920027072-IP-BUNDLE&amp;utm_source=rss&amp;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&amp;cjsku=6232362&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Python Essential Reference</a></li> <li><a href="https://github.com/mozilla/fathom?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Fathom</a></li> <li><a href="http://www.swig.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">SWIG</a></li> <li><a href="https://en.wikipedia.org/wiki/Windows_Script_Host?utm_source=rss&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">PEG</a> (Brian Foord)</li> <li><a href="http://amzn.to/2l8aeNI?utm_source=rss&amp;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&amp;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&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">Earley parsing</a></li> <li><a href="https://pypi.python.org/pypi/spark_parser?utm_source=rss&amp;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&amp;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&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">Trampolining</a></li> <li><a href="https://en.wikipedia.org/wiki/Lisp_(programming_language)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Lisp</a></li> <li><a href="http://www.nltk.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">NLTK</a></li> <li><a href="https://github.com/dabeaz/sly?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">SLY</a></li> <li><a href="https://dxr.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">DXR</a></li> <li><a href="http://llvm.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LLVM</a></li> <li><a href="http://numba.pydata.org/?utm_source=rss&amp;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&amp;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&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fepisode-95-parsing-and-parsers-with-dave-beazley-and-erik-rose%2F&amp;action_name=Parsing+and+Parsers+with+Dave+Beazley+and+Erik+Rose+-+Episode+95&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>