Dimensional

From Esolang
Jump to navigation Jump to search
Dimensional
Paradigm(s) procedural, imperative
Designed by User:NutronStar45
Appeared in 2022
Type system bytes
Memory system cell-based
Dimensions theoretically infinite-dimensional
Computational class Unknown
Reference implementation Unimplemented
File extension(s) .dim

Dimensional is an esoteric programming language created by User:NutronStar45, where you can have infinite dimensions of infinite dimensions of infinite dimensions of infinite dimensions of ... of infinite dimensions of bytes.

Structure

  • There are infinite pointers, which in default all points to 0 in all axes
  • ...
  • A 4-slot has a 4-pointer
  • The 4-pointer is pointing at a 3-slot
  • A 3-slot has a 3-pointer
  • The 3-pointer is pointing at a 2-slot
  • A 2-slot has a 2-pointer
  • The 2-pointer is pointing at a 1-slot
  • The 1-slot contains a byte

Terminology

n-slot

For n > 1, an n-slot is an infinite-dimensional space with each slot containing an n-pointer.

n-pointer

For n > 1, an n-slot is an infinite-dimensional pointer with each slot containing an (n-1)-slot.

1-slot

A 1-slot contains an unsigned byte.

Pointer axis

The operations are done in (pointer axis)-pointer/-slot.

Value

The value of the 1-slot being pointed at.

Syntax

Negative dimensions are prefixed with a tilde (~) instead of a hyphen (-).

In comment mode, all characters will be ignored.

There 20 instructions in Dimensional:

Syntax Action
>DIMENSION Increases the <pointer axis>-pointer's coordinate on the DIMENSION axis by 1.
<DIMENSION Decreases the <pointer axis>-pointer's coordinate on the DIMENSION axis by 1.
> Increases the <pointer axis>-pointer's coordinate on <value> axis by 1.
< Decreases the <pointer axis>-pointer's coordinate on <value> axis by 1.
+ Increases the value by 1.
- Decreases the value by 1.
:CHAR Sets the value to the equivalent ASCII code.
=HEX Sets the value to the specified 2-digit hexadecimal number, case-insensitive.
. Prints the pointer value in ASCII.
, Accepts a character between \x00 and \xff and sets the value to that character in ASCII.
d Accepts a number written in decimal and set the value to that number.
x Accepts a number written in hexadecimal and set the value to that number.
[ NOP if the value isn't 0, or skips past the matching ] otherwise.
] Jumps back to the matching [.
{DIMENSION NOP if the <pointer axis>-pointer's coordinate on the DIMENSION axis isn't 0, or skips past the matching } otherwise.
} Jumps back to the matching {.
?DIMENSION Sets the value to the remainder of the <pointer axis>-pointer's coordinate on the DIMENSION axis divided by 256.
!DIMENSION Sets the <pointer axis>-pointer's coordinate on the DIMENSION axis to 0.
$AXIS Sets the pointer axis to AXIS.
* Toggles comment mode.

Implementations

A C++ interpreter of version 1.0 by User:Bangyen.

Changelog

3.0

  • Removed "meta"
  • Added infinite infinite dimensions
  • Removed the board
  • Removed the metapointer
  • Changed the pointer to n-pointers
  • Changed the worlds to n-slots
  • Renamed pointer value to value
  • The suffix of negative dimensions is now ~ instead of _
  • Removed the m command
  • Added the $AXIS command
  • Added the d command
  • Added the x command

2.0

  • Added the concept of "meta"
  • Added the metapointer
  • Added the new board and changed the original board to worlds
  • Added notation
  • Added meta/non-meta state
  • Added negative dimensions
  • Added the m instruction