Evolving Domain Specific languages in Ruby

Surya Gaddipati from Groupon will be discussing three progressively intrusive techniques for evolving a Domain Specific Language in Ruby

  1. Metaprogramming: This is what frameworks like Rails mainly use to provide its dsl. ( Wont discuss this much)
  2. Code - As - Data using Ripper : Ripper is a ruby 1.9 library which provides AST(abstract syntax tree) of the code you feed it.  This AST can then be translated into desired code. I plan to demo this  technique I used in my library LINQR ( A .net linq  implementation in ruby)https://github.com/suryagaddipati/linqr
  3. Modifying Ruby Interpreter: Modifying Ruby Interpreter to natively support your syntax. I plan to walkthrough modifying parse.y ruby’s yacc grammar file to support our DSL natively. Also a brief overview of yacc/lex parser generator and lexer.

Note: our September meeting will not follow the usual pattern of the third Tuesday of the month.  Instead, we will meet on the fourth Tuesday in September.

Join or login to comment.

Our Sponsors

  • Follett Software Company

    Follett Software Company provides the venue for our meetings.

  • Veredus

    Veredus is currently sponsoring our Meetup.com account.

  • 8th Light

    Provides us mchenry.softwarecraftsmanship.org and helps with expenses.

  • Cranium Core

    A good friend of the group, since the beginning.

  • Express Pigeon

    Buy 1 month of service get the next three months free.

  • Groupon

    Assisting with some group-related expenses.

  • VoltSoftware

    They picked up the tab for the Meetup.com subscription. Thanks, Rob!

  • Clean Coders

    Change the way you think about code, design and your profession.

Imagine having a community behind you

Get started Learn more

We just grab a coffee and speak French. Some people have been coming every week for months... it creates a kind of warmth to the group.

Rafaël, started French Conversation Group

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy