Eod

eod, aka Elementesol on Discord is a joke programming language made by User:icecream17 based on the game Elemental on Discord.
An eod file consists of a bunch of c-commands, separated by 3 newlines.
== stability ==
Properties of elements and collections of elements may change at any time. Additionally collections can be deleted. So any program is subject to breaking at any moment. However, element combos have never been changed, and very few elements have been renamed, maybe to fix typos or correct capitalization.
== c-commands ==
Currently, the only c-command is output.
=== output ===
The output c-command is a followed by a newline, and then is followed by several #play channel commands separated by 2 newlines. It then outputs the result of the last #play channel command. Outputting an element outputs the name of the element. Outputting a collection of elements is currently undefined.
== how to play eod (copied) ==
You start with four elements: Air, Earth, Fire and Water. In a play channel, you may combine elements through the use of plus signs, for example: Water + Fire. This will give you an element.
Other ways to combine elements are through commas (Water, Fire) and line breaks:
 Water
 Fire
If an element doesn't exist yet, the bot will display the following: That combination doesn't exist! :red_circle:. In this case, you may /suggest an element that will create this combination. This will place the poll onto ⁠#voting, where you and other players may vote for this combination.
You may combine up to 21 elements at a time instead of just two like in the original Elemental 3.
== advanced combining ==
All elements are assigned an ID in the format #<index>. The first index is 1, which corresponds to the element Air. These IDs can be used in place of the element name in #play channel commands. This is useful in cases when, for example:
# When two elements canonicalize to the same string.
# When an element would be interpreted as part of a command.
For a command that combines elements, a message sent will first be checked for a newline, then a plus sign, then a comma, and parsed according to the first separator that matches. The entire message is split with the separator, resulting in several tokens. Tokens are canonicalized as follows: Whitespace at the start or end is removed. Ignore case.
The most recently made element can be combined with more elements using the syntax +elem1+elem2+.... It can be combined with itself n times with *n. Finally, an arbitrary element can be combined with itself n times with *n <element>.
You can only combine elements in your inventory, which as mentioned starts with Air, Earth, Fire, and Water.
== other commands ==
?<element> gets the info of an element
!p<element> gets the elements that have a combination using the given element
!cat <categoryname> gets a category
!q <queryname> gets a query
!q <queryname> gets your inventory
The result of a #play channel command is either the element made or referenced, or a collection of elements referenced (e.g. an inventory, category, or query).
== Hello, world! ==
Hello, world! has the id #619842, so it is possible to make a hello world program, but I'm too lazy.
Category:Languages Category:Joke languages Category:Unimplemented