This should have been done as a parser+lexer combo, but apparently
that's not what FML does.