::= [a-zA-Z]+ ( -
? [0-9a-zA-Z]+ )*
Every atom is identified by a key which provides a way to refer to the atom whether it is located inside a view, stream, world, or machine. The key must be unique within the entire Mimix machine. In other words, the atom (@WALT)
refers to the same atom whether it appears in a view, canon, stream, or world. Two separate Mimix machines may have different values for (@WALT)
but these must be coalesced into a single value by the viewer before any atom referring to (@WALT)
from the first machine could be incorporated into the second.
The atom (@WALT)
can be moved between machines, worlds, streams, views, or canon without changing its value. Every reference to that key whether direct (in which the full key sequence is stated) or implied (in which it is not) is a reference to the same atom, including all of its metadata and values.
Keys begin with a group of upper or lowercase letters from A-Z. Additional groups may be separated by dashes. The second and subsequent groups may also contain numbers. No other characters are permitted in keys. Keys are not case-sensitive but are set and recalled using the case provided in the expression. A space must appear between the key and the next syntax element.
(@Julie-Andrews Julie Andrews) ⇒ Julie Andrews
(@mary-poppins (@Julie-Andrews)) ⇒ Julie Andrews
(@MARY-POPPINS) ⇒ Julie Andrews
(@MARYPOPPINS "Mary Poppins") ⇒ "Mary Poppins"
(@MaryPoppins) ⇒ "Mary Poppins"
(@MOVIE2 (@Mary-Poppins)) ⇒ Julie Andrews
(@movie2 (@MaryPoppins)) ⇒ "Mary Poppins"
(@movie2) ⇒ "Mary Poppins"
(@Julie-Andrews:birthday) ⇒ 1935-10-1
(@Julie-Andrews:movie2 (@movie2)) ⇒ "Mary Poppins"
(@JULIE-ANDREWS-MOVIE2-TITLE (@Julie-Andrews :movie2)) ⇒ "Mary Poppins"
(@2MOVIES) ⇒ Starts with a number.
(@-MOVIES) ⇒ Starts with a dash.
(@MOVIES-) ⇒ Ends with a dash.
(@MOVIES/HITS) ⇒ Invalid character: slash
(@MOVIES.HITS) ⇒ Invalid character: dot
(@MOVIES(2020)) ⇒ Invalid characters: parentheses
(@MOVIES[NEW]) ⇒ Invalid characters: brackets
(@MOVIES@HITS) ⇒ Invalid character: @
(@MOVIES(@HITS)) ⇒ Needs space before a new atom (@HITS).
(cIMDB Top 100 Films) ⇒ Canon namespace needs a space before key.