We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

LindenMASM

From Esolang
Jump to navigation Jump to search

LindenMASM is an Assembly-like esoteric programming language designed by Vioz- of the Code Golf SE site. It allows for the simple writing and displaying of Lindenmayer systems. The current Python implementation of the interpreter does drawing via turtle. It was created for the purposes of a challenge, which was pointed out to be too close to a pre-existing challenge.

Syntax

There are only a few keywords available in LindenMASM.

STT - Begins every LindenMASM file.

AXI $ - Sets the axiom (initial state) of the system.

  • $ is a series of commands/variables/constants, ranging from the built-ins plus any user-defined functions.

DEG $ - Sets the degree of which all turns will follow, default is 90.

MOV $ - Sets the move distance of which all position adjustments will follow, default is 10.

INC $ - Sets the number of iterations the generation should go through, default is 0.

SET $ # - Sets a constant $ to a specified command #

  • $ should be a character that is not one of []+-.
  • # will either be a 0 or a 1, where a 0 corresponds to the constant being one that draws forward, and a 1 corresponds to the constant being one that moves forwards.

RPL $ # - On every iteration, variable/constant $ will be replaced with the command/variable/constant string #.

  • $ should be a character that is not one of []+-. It does not need to be SET to be replaced.
  • # is a string of commands/variables/constants that $ should be replaced with.

END - Ends every LindenMASM file.

Each keyword should be placed on a new line. Every file should start with STT and end with END.

Commands

These are the built-in commands you can use in the axiom, or any replacement.

+ - Rotates the pointer to the right DEG degrees.

- - Rotates the pointer to the left DEG degrees.

[ - Saves the pointer's coordinates and heading to a list.

] - Pops the last value of a list and sets the pointer's coordinates and heading to that.

Examples

Fractal Tree

STT
AXI X
DEG 25
MOV 2
INC 6
SET F 0
RPL X F-[[X]+X]+F[+FX]-X
RPL F FF
END

Dragon Curve

STT
INC 12
AXI FX
SET F 0
RPL X X+YF+
RPL Y -FX-Y
END

External resources

Python 3.x Implementation