Overview
EasyLang exists because for a lot of students in India the first wall is English rather than logic. Someone who understands a loop perfectly can still stall on `while`, `return` and `function`.
So I wrote a language with Hindi keywords and a complete pipeline from source text to result: tokeniser, recursive-descent parser producing an AST, tree-walking interpreter. It is on npm, and it runs in the browser through a playground.
- Role
- Language design, full implementation, npm package, browser playground.
- Year
- 2025
- Stack
- TypeScriptNode.jsnpm
Engineering
The decisions that mattered.
- 01
Hand-written lexer and recursive-descent parser
No parser generator. Writing it by hand kept every error message under my control, which matters more than an elegant grammar when the audience is beginners.
- 02
Error messages in the learner's language
A syntax error reports in Hindi with the offending line and column. In a teaching language the error path is the primary interface.
- 03
One interpreter, Node and browser
The core has no platform dependencies, so the npm package and the web playground run identical code. What gets taught is what ships.
Design decisions
Why it looks and behaves the way it does.
I designed this as well as built it. These are the interface calls I made and the reasoning behind each one.
Keywords chosen for how people speak
Keyword selection went with the words used in conversational Hindi over their formal Sanskritised equivalents. A language for beginners should read the way they already think.
The playground shows source and result together
Split view, no run-and-navigate step in between. Shortening the loop between typing something and seeing what it did is most of what makes a learning tool feel encouraging.
Errors are styled as guidance
Error output gets the same calm treatment as ordinary output. Beginners hit errors constantly, and if each one arrives looking like a crash, what they learn is to be wary of the tool.
Outcomes
What shipped.
- Published and installable as `easylang-interpreter` on npm
- Complete pipeline from lexer to parser to interpreter, written from scratch
- Runs identically in Node and in the browser playground