The Full Wiki

Argh!: Wikis


Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.
Argh! and Aargh! are fungeoid esoteric programming languages (i.e. languages deliberately designed to be strange, with utility not an objective).

Argh! and Aargh! share a two dimensional layout. Both are limited to 80 columns wide but while Argh! is also limited to 40 rows, Aargh! has unlimited number of rows. Each command is a single character and occupies one cell of the grid; a cell can alternately contain a value. The language also supports a stack of theoretically unbounded size. There are 27 documented commands.

The following program prints out "Hello, Wikipedia!":
j Wikipedia!
lpppppppPPPPPPPPPPq
Hello,

Explanation of the above program: execution begins with the j in the top row leftmost column, which indicates the starting direction of execution is down. The next command executed is the l which means process commands to the right. Each p indicates that the value below it should be printed; each P that the value above it should be printed. The q (for quit) command marks the end of the program.

A program that tries to execute a value that is not a command, or that tries to execute outside the grid, emits the language's standard error message, Argh! or Aargh! as appropriate, and terminates.

Commands



Each valid instruction in Argh! and Aargh! consists of one ASCII character. The can be classified as:
  • Unconditional flow control. There are 4 commands that specify which direction (left, down, up or right) instruction processing should proceed in.
  • Conditional flow control:
  • *Jump to the next cell, in a specified direction, that has the same value as the top of the stack, and begin processing in that direction.
  • *If value on top of stack is positive turn direction execution 90 degrees right; another command turns 90 degrees left if top value of stack is negative.
  • Stack operations:
  • *Push value of cell above (or below) execution onto stack.
  • *Duplicate top value of stack.
  • *Pop and discard from stack.
  • *Add/Subtract value in cell above/below this command to top of stack.
  • *Pop value from stack and store in cell above/below this instruction.
  • Input/output:
  • *Send value in cell above/below instruction to standard output.
  • *Store byte from standard input in cell above/below this instruction.
  • *Store system EOF in cell above/below this instruction.
  • End execution.


  • External links

  • freshmeat.net: Project details for Argh!
  • Language specification
  • A Linux implementation












  • Got something to say? Make a comment.
    Your name
    Your email address
    Message
    Please enter the solution to case below
    70+12=