[HN Gopher] Write an Interpreter in Ruby
___________________________________________________________________
Write an Interpreter in Ruby
Author : ksec
Score : 46 points
Date : 2025-04-25 16:26 UTC (6 hours ago)
(HTM) web link (speakerdeck.com)
(TXT) w3m dump (speakerdeck.com)
| vinceguidry wrote:
| This was amusing in a good way. I did write a few parsers in Ruby
| back in the day, the experience taught me that we already have
| the best syntax possible at our disposal, why not just lean on
| it. You get so much more when you don't have to leave Ruby. I
| find myself reaching for a DSL whenever I have to deal with a lot
| of less-expressive code / configuration.
|
| I'll write generators that take a DSL as input and spit out the
| mountain of boring stuff. Last time was to deal with keyd's[1]
| homegrown syntax, which is powerful, but not expressive. I made a
| gist for the curious.[2]
|
| Before finding keyd, I also took this approach with Xbindkeys
| config, and was on my way to wrapping Kubernetes in nice,
| friendly Ruby before I got canned.
|
| 1. https://github.com/rvaiya/keyd
|
| 2.
| https://gist.github.com/VinceGuidry/e85fa37e3e60f2dcb63c051c...
| omneity wrote:
| A long time ago, I believed I wanted to implement a custom
| interpreter in Ruby. And then I discovered method_missing, and
| later on the rabbit hole that is Metaprogramming in Ruby, and
| that worked wonders to get the interpreter thought of my system,
| but not before implementing at least 3 DSLs of dubious value.
|
| While it worked great to gently expand my knowledge on what's
| possible in programming (I would have burned myself on a lisp,
| not for the lack of trying as I did with Haskell), it also taught
| me about the meaning of shooting oneself in the foot, and in a
| sense do not regret the absence of such powers in JS and Python,
| even if Proxy objects are dangerously close!
___________________________________________________________________
(page generated 2025-04-25 23:01 UTC)