PanASCIIc Programming Language

From Esolang
Jump to navigation Jump to search

The PanASCIIc Programming Language, or PAPL, is a programming language designed by User:Hppavilion1. It aims to support all of ASCII in its semantics, such that- for example- this wiki article could be fed into it to produce some effect.

Design philosophy

  • Support all of ASCII (though control characters are NOPs)
  • Allow text programs to be fed to it without crashing
  • Maybe support some of the more common unicode in other blocks
  • Do all of this in a fun way

Syntax

Due to the nature of languages of this sort, PAPL pretty much needs to be a character-by-character language, similar to languages like brainfuck. Unlike brainfuck and similar languages, however, PAPL has absolutely no syntactic or semantic rules that would prevent it from executing properly- it is literally impossible for PAPL to crash. This requires some fanagling with the rules of mathematics (n/0 = ∞, for example), but it works.

Semantics

PAPL is largely just a list of single-character commands, but it has a few gems.

First of all, PAPL is based off of Mascarpone in its behavior- the interpreter can be changed in order to change what commands do (this is called "modes"). This opens up a number of new available commands for PAPL, but also makes it much more difficult to choose logical meanings for commands. As such, we try to limit the number of builtin interpreters, and deem that an invalid command in the current interpreter is a NOP.

PAPL operates on a tape of deques. The deques are dynamically-typed and can hold a number of data structures and scalars: graphs, matrices, strings, other deques, floats, booleans, etc...

Instructions

There are so many instructions that they need to be kept elsewhere. Also, they aren't done yet.