Hacker News new | ask | show | jobs
by aurynn 5607 days ago
I wrote a parser and lexer by hand. Building the mental abstractions to figure out how a syntax tree should be constructed and walked was amazing. It gave me the tools to visualize how code is structured, how to avoid poorly structured code, and how program flow actually works.

The first revision took me around 6 months to implement, and the second about 3 days. Worth every moment of futzing around and hacking and designing.

The language is getting rewritten (this time with an actual grammar!), and I'm finding it still has a mountain of useful things to teach me about programming. I can't recommend it enough. :)

2 comments

Did you cheat and use a regex library in your lexer, or did you build a regex engine aswell?

I built recursive descent parser, and a lexer using the posix regex libary in 2 days first attempt and extra 14 days for semantic analysis and x86 code generation which operated by walking the ast. Most of those days were mostly learning x86 assembly. I can't understand 6 months, unless you did everything from scratch like the regex engine I.E Constructing NFA's, converting to DFA's etc etc.

I think I cheated and used an existing regex library - it's been a while.

As far as the 6 months, it was my first major, major project and required so much learning and research on just how to structure code that it took a long time to craft. It didn't help that the design was so complex that debugging it was a chore. :)

Hence the V2 rewrite that took a couple of days.

I did this too! After the second time I became bored with writing parsers by hand and now I'm trying to write a parser generator instead. It's extraordinarily good fun.
OOh, that does sound like fun. I've been toying with how to write a grammar generator on Node.js, lately - something in the vein of PyParsing.