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