‹ BackHN Continuity

Thread

Needed 1+1, built a functional programming language

151 points · 80 comments · birdculture

  1. andai · · focus · HN ↗
    I don't have it handy but in uni I was responsible for the Excel formula parser in a group project. I agonized over it for like six days until it suddenly clicked that I could just do a bunch of string matching, and rewrite the formula over and over again until it was a number.

    More precisely, I had figured out how to parse an Excel formula (keeping track of braces and commas, I recall!). For the actual math symbols, all I had to do was rewrite them as Excel formulas!

    3+6*2 -> 3+MUL(6,2) -> ADD(3,MUL(6,2))

    In order of precedence. And then just evaluate the resulting formulas inside-out:

    ADD(3,MUL(6,2)) -> ADD(3,12) -> 15

    It somehow ended up being a thousand lines of code. Another guy doing the same assignment told me he did it in 50 with regular expressions.

    In retrospect, what I did reminds me of hammering in a nail with a screwdriver.

    I ended up revisiting the idea later (just the math parser, no ADD() syntax) and it was much nicer, like 30 lines of JS (no regex either!). (Well, you can do it in one line with eval, but yea :)

Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.