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 | Turing complete |
| 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-pointer is an infinite-dimensional pointer with each pointer 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
mcommand - Added the
$AXIScommand - Added the
dcommand - Added the
xcommand
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
minstruction