Syntax ###### Comefrom0x10 is **line-oriented**. Every line is a single statement and in fact, you can't escape the newline at the end of a line or do any line continuation at all because that usually makes code harder to read. Blocks in cf0x10 are defined by **indentation** and create new lexical scopes. They look similar to functions in other languages, but they are not actually functions since they do not take arguments or return values:: block_name statements .. sidebar:: Buzzword! You can't "call" a block at all (don't call me, I'll call you). This is also known as "inversion of control." **Blank lines** are significant, as yield points for jumps, except when they immediately follow blocks. **Comments** are significant, not for content, but because they can change what counts as a blank line. Comments begin with a mesh character and continue until the end of the line:: # this is a comment If there are no top-level statements in a program, execution begins at the first block, in source-code order. If there are top-level statements execution begins at the first top-level statement. Source code is always read as UTF-8. Identifiers *********** Only lowercase ASCII letters, digits and underscore are allowed in identifiers, because uppercase is reserved for future use. Identifiers cannot start with a digit. Numbers ******* Number literals are always American-style decimal format, that is, with a full stop to separate the fractional part:: 1.5 There is no syntax for octal, hex, or other such nonsense. This is a high-level language after all. Strings ******* Both single and double quotes are allowed in string literals. There is no difference, but idiomatic Cf0x10 tends to use single quotes, as they are easier to type:: "A string" 'A string' Backtick is the escape character:: '`n is a newline' "`" is a literal double-quote" Only ```n`` is a valid escape sequence. No others, such as ```t`` or Unicode escapes are implemented in the current parser, though Unicode literals are allowed. Just write UTF-8 source files. Operators ********* In order of precedence [#]_ =========== ===================================== Operator Meaning =========== ===================================== ``(`` Grouping ``*`` Multiplication ``/`` Division ``+`` Addition ``-`` Subtraction ```` Concatenation ``<`` Less than ``>`` Greater than ``is`` Equals (comparison) ``=`` Assignment ``...`` Continues (no newline between output) =========== ===================================== Conspicous by their absence are the boolean operators ``and``, ``or`` and ``not``. These can easily be simulated by other constructions within the language [#]_ and their inclusion would tempt program authors to write complicated, unreadable boolean expressions. Keywords ******** ============ ===================================== Keyword Meaning ============ ===================================== ``die`` Crash and burn. Intended for debugging. Cf0x10 is nothing if not pragmatic. ``comefrom`` The control flow statement to rule them all ``if`` Introduce a condition to limit, valid in ``comefrom if`` and ``die if``. ============ ===================================== .. [#] Except where there are ties .. [#] For weak values of "easy"