• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Easy Compilers With Ruby and Treetop
 

Easy Compilers With Ruby and Treetop

on

  • 5,404 views

My talk at RubyConf India 2011. A short one that describes how to use treetop to write easy compilers.

My talk at RubyConf India 2011. A short one that describes how to use treetop to write easy compilers.

Statistics

Views

Total Views
5,404
Views on SlideShare
5,400
Embed Views
4

Actions

Likes
5
Downloads
38
Comments
2

2 Embeds 4

http://paper.li 3
http://a0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • looks like the code never made it to your github? would like to take a look.
    Are you sure you want to
    Your message goes here
    Processing…
  • Your presentation design skills are better than before :)
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Easy Compilers With Ruby and Treetop Easy Compilers With Ruby and Treetop Presentation Transcript

    • VISHNUG O PA L EASY COMPILERS WITH RUBY AND TREETOPSaturday, 28 May 2011
    • • Vishnu Gopal • Started as a Software Engineer, SlideShare Inc. • Human-Computer Interaction from UCLIC, London • CTO, MobME Wireless. • Working with Ruby for over 5 years. ABOUT ME vishnugopal.com @vishnugopalSaturday, 28 May 2011
    • • College startup in 2006 • NASSCOM Global Leadership Award, 2011 • VAS & core network solutions for mobile operators • Over 40 engineers working in Ruby & 2 speakers at RubyConf India MOBME WIRELESS mobme.in @mobmewirelessSaturday, 28 May 2011
    • DRAGON BOOK • Aho, Sethi & Ullman • 1009 pages of wisdomSaturday, 28 May 2011
    • • Too complicated. • Meant for Computer ScientistsSaturday, 28 May 2011
    • • Designed for a programmer • Not too hard to grok • Iterative development • Friendly • Fun IN RUBYSaturday, 28 May 2011
    • COMPILERS? HOW ARE PARSERS AND COMPILERS USEFUL?Saturday, 28 May 2011
    • A compiler converts a high-level language into a form that computers can understand. A parser structures a high-level language into an intermediate form that compilers can then use. WHAT?Saturday, 28 May 2011
    • PARSINGSaturday, 28 May 2011
    • PARSING 2Saturday, 28 May 2011
    • • Convert this regular expression into a FSM. • Run a block of text against this FSM and return true or false. COMPILINGSaturday, 28 May 2011
    • • When you write a regular expression, you do not worry about all of this. You do not care about how it’s parsed, compiled or matched. • A regular expression matches strings, but what if you want to do other things with your own mini language? • A compiler construction library will help you do that. ABSTRACTIONSaturday, 28 May 2011
    • • A search query language like Google’s: Cricket -Tendulkar • A SQL-like frontend for your favourite NoSQL backend: SELECT * FROM LIST redis.rubyconf • A small DSL to match twitter entries. tweet.text contains “India” AND tweet.text has hyperlink POSSIBILITIESSaturday, 28 May 2011
    • • Yacc & LEX • Bison & FLEX • Boost Proto NOT MY IDEASaturday, 28 May 2011
    • A RUBY WAYSaturday, 28 May 2011
    • TREETWEETSaturday, 28 May 2011
    • • BNF Form: a computer-sciency way to define language keywords, syntax and order of precedence of operators. • Or, a formal definition that you can feed to a parser BACKUS NAURSaturday, 28 May 2011
    • TT BNFSaturday, 28 May 2011
    • TT BNF 2Saturday, 28 May 2011
    • Inc orre ct! TT BNF 3Saturday, 28 May 2011
    • TT BNF 4Saturday, 28 May 2011
    • Expression Not Term Not Term Term “NOT” Term target = tweet.text binary_operator = contains argument = “India” TT BNF EXAMPLESaturday, 28 May 2011
    • BNF TO TREETOPSaturday, 28 May 2011
    • GET IT WORKING!Saturday, 28 May 2011
    • A compiler converts a high-level language into a form that computers can understand. A parser structures a high-level language into an intermediate form that compilers can then use. AGAIN?Saturday, 28 May 2011
    • • Syntax Oriented Programming • Matching rules can have Ruby methods inline or mixed in as a module. • These methods are available to the parser. • Implement a “compile” method for e.g. to compile parsed objects into an executable form. • Let us compile TreeTweet into our favourite language! SYNTAX FIRSTSaturday, 28 May 2011
    • TREETWEET LANGUAGE .treetop generates TREETWEET TWITTER LANGUAGE FIREHOSE TREETWEET PARSER is parsed by generates produces TWEET RUBY CODE RUBY OBJECT performs match BOOLEAN RESULT OVERVIEWSaturday, 28 May 2011
    • COMPILE 1Saturday, 28 May 2011
    • COMPILE 2Saturday, 28 May 2011
    • COMPILE 3Saturday, 28 May 2011
    • COMPILE 4Saturday, 28 May 2011
    • COMPILE 5Saturday, 28 May 2011
    • • What we’ve done is implement a cross-compiler. • The cross-compiler compiles the TreeTweet DSL down to Ruby. • It could however, be easily modified to compile it down to say Java, or even C if you need performance. • It’s small and concise. The treetop grammar is less than 50sloc. The compiler less than 400sloc. • It’s really easy to modify. RECAPSaturday, 28 May 2011
    • • github.com/vishnugopal • Not released yet, soon! SOURCE CODESaturday, 28 May 2011
    • codejam.mobme.in QUESTIONS?Saturday, 28 May 2011