/L4b3r7nth

An esoteric programming language based on the idea of spreadsheets (WIP)

L4b3r7nth Specifications v0.3

(c) Copyright 2014-2015 Nathan Krantz-Fire. Some rights reserved.
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.

L4b3r7nth is an esoteric programming language focused around spreadsheets.

https://github.com/zippynk/l4b3r7nth

Syntax:
BEGIN |METHOD_NAME| DIRECTION INCREMENT
COMMAND |arguments|go|here| DIRECTION INCREMENT And the rest is ignored and can be anything.
MULTI-WORD-COMMAND |arguments|go|<VALUE |arguments|go|here|>|here| DIRECTION INCREMENT And the rest is ignored and can be anything.
END

This goes in a spreadsheet.

The method “START” is executed at the beginning of the program. The method “END” is executed when the program is about to terminate

Global methods:

BEGIN |method|
FINISH ||
OUT |text|
IN |text|resulting_variable|
SETCELL |x_position|y|y_position|value|
FLAGCELL |x_position|y_position|cell_type|
MOVECURSOR |x_position|y_position|
DELETE-UNUSED-CELLS ||
NULL ||
RUN |method|number_of_times|
IFRUN |condition|method|number_of_times|
PLUGIN-[Plugin name goes here]-[Command name goes here] |arguments|go|here|
PARENTMODULE-[Command name goes here] |arguments|go|here|
GOTO |x_position|y_position| Comments go right afterward since this is a moving command and therefore does not move right afterward.

Global values:

<CELL ||>
<HOUR ||>
<MINUTE ||>
<SECOND ||>
<DAY ||>
<WEEK ||>
<MONTH ||>
<YEAR ||>
<PROGRAM-CLOCK ||>
<NULL ||>
<ADD |first_number|second_number|>
<SUBTRACT |first_number|second_number|>
<MULTIPLY |first_number|second_number|>
<DIVIDE |first_number|second_number|>
<MODULO |first_number|second_number|>
<EXPONENT |first_number|second_number|>
<JOIN |first_string|second_string|>
<CONVERT |thing|data_type|>
<PLUGIN-[Plugin name goes here]-[Reporter name goes here]> |arguments|go|here|>
<PARENTMODULE-[Value identifier goes here] |arguments|go|here|>

Cell types:
"data": Data, usually a variable. Cannot be executed. Reset to blank on program start. Default cell type for previously blank cells with data added.
"code": Computer program code. Can be executed. Default cell type for data in the spreadsheet at launch.
"blank": Contains nothing. Setting a cell to this will erase it. Cannot do anything. Default cell type for cells.
"curses-editable": Shown to the user as a TUI, can be edited by the user with the keyboard. Any key non-navigation key pressed overrides the current cell, which can be controlled with the "MOVECURSOR |x|y|" command. This cell can only have one character in it - more will produce an error and end the program. While there are curses cells, no IN or OUT commands can be given - if any are, it will produce an error and end the program.
"curses-noneditable": Shown to the user as a TUI, static to the user. The user's cursor can be controlled with the "MOVECURSOR |x|y|" command. This cell can only have one character in it - more will produce an error and end the program. While there are curses cells, no IN or OUT commands can be given - if any are, it will produce an error and end the program. 

Removed Modules:
CREATE, SET, and DELETE. Use data cells.
END |module|. Changed to "FINISH ||" and no module is specified - it just ends the current one.