2 comments

  • Rochus 7 hours ago
    I’ve been working on a project to celebrate the anniversary of MUMPS and its first standard.

    For those unfamiliar, MUMPS is an imperative language famously born at Mass General Hospital in 1966. Its defining characteristic is that the language and the database are deeply integrated. There is no impedance mismatch: hierarchical, persistent sparse arrays (called globals) are a first-class part of the language syntax, acting as an early NoSQL database decades before the term existed.

    Implementing this was a lot of fun, but the lexer was a real challenge. MUMPS has highly unusual whitespace semantics, and nearly all commands can be abbreviated to one or two characters. This is probably the most complex lexer in my collection. The parser was originally generated using my EbnfStudio.

    There are pre-compiled versions and a MUMPS 76 Primer with modern terminology in case you want to play with it.