Episode 54

054 JSJ JavaScript Parsing, ASTs, and Language Grammar w/ David Herman and Ariya Hidayat


April 5th, 2013

59 mins 26 secs

Your Hosts
Special Guests

About this Episode

Use this link and code JAVAJAB to get 20% off your registration for FluentConf 2013!


David Herman (twitter blog Effective JavaScript)
Ariya Hidayat (twitter github blog)
Tim Caswell (twitter github howtonode.org)
Jamison Dance (twitter github blog)
Joe Eames (twitter github blog)
Merrick Christensen (twitter github)
Charles Max Wood (twitter github Teach Me To Code Rails Ramp Up)

00:48 - David Herman and Ariya Hidayat Introduction

044 JSJ Book Club: Effective JavaScript with David Herman
023 JSJ Phantom.js with Ariya Hidayat

01:54 - Parsing JavaScript and ASTs and Language Grammars
04:44 - Semantics
06:08 - Abstract Syntax Tree (AST)

Esprima: Parser

10:37 - Lexer
12:16 - Writing your own language

creationix / jack
The C Programming Language

17:41 - Parser Generators


21:04 - Evolving a Syntax
Automatic Semicolon Insertion

Post correspondence problem
Halting problem

28:05 - Language Design

The Rust Programming Language

30:35 - Grammar

Regular Expressions (Regex)
Backus–Naur Form (BNF)
How to Design Programs (HTDP)

38:00 - Recursive Descent Parsers
42:48 - Benefits of knowing language internals and syntax

Apache Lucene - Apache Lucene Core
LPeg - Parsing Expression Grammars For Lua

48:48 - Abstract Syntax Tree (AST)


Mass Effect 3 (Joe)
A Beginner's Guide to Irrational Behavior | Coursera (Joe)
Go write a programming language to learn one (Tim)
Thumbs and Ammo (Jamison)
ISM by Savant (Jamison)
Vimcasts (Jamison)
The iPhreaks Show (Chuck)
Mozy (Chuck)
Tech & Go Bright Pink Micro USB Cable (David)
asm.js (David)
Beyond Office Politics: The Hidden Story of Power, Affiliation & Achievement in the Workplace by Linda Sommer (Ariya)
gotwarlost / istanbul (Ariya)

Next Week
Web Developer Skills
JAMISON:  I am Linus Torvalds and I pronounce Linux, Linix.

[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.]

[This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.]

CHUCK:  Hey everybody and welcome to Episode 54 of the JavaScript Jabber Show. This week on our panel, we have Tim Caswell.

TIM:  Hello.

CHUCK:  Jamison Dance.

JAMISON:  Hi guys.

CHUCK:  Joe Eames.

JOE:  Hey there.

CHUCK:  Merrick Christensen.

MERRICK:  Hey guys, what’s up?

CHUCK:  I’m Charles Max Wood from DevChat.tv. And we have two special guests this week. We have Dave Herman.

DAVID:  Hey there.

CHUCK:  Ariya Hidayat.

ARIYA:  Hello everyone.

CHUCK:  And these guys are so smart that we brought them back. So, if you’re interested, we’ll put links to the episodes that they were on. David was on when we talked about his book ‘Essential JavaScript’ and Ariya was on when we talked about PhantomJS.

JAMISON:  Effective JavaScript.

CHUCK:  Effective? What did I say?

MERRICK:  Essential.

CHUCK:  Essential? Well, it’s an essential book on Effective JavaScript. How’s that?


MERRICK:  Good save.

DAVID:  At least, you didn’t say Defective JavaScript.


CHUCK:  No, that’s what I write. I’m really good at writing defective JavaScript.

ARIYA:  Actually, there’s a book about Essential on Defective JavaScript.

CHUCK:  I also want to announce really quickly that Fluent Conf has given us a discount code. So, if you want to get 20% off on your registration for Fluent Conf, just enter JAVAJAB and you’ll get 20% off when you register for Fluent Conf.

Alright. Well, let’s get started. This is going to be a really, really interesting topic and it’s something that I’ve wanted to know more about for a long time. And I just haven’t delved as deeply into it as I would like to. And that is,