1. syntax
alv
programs consist of a series of expressions separated by chunks of
whitespace. Each expression may be either a literal constant or a cell.
literal constants
There are three types of literals with different syntax:
numbers
Numbers consist of the digits 0
-9
and can optionally begin with a
negative sign and contain a decimal dot. The digits before or after the
decimal point may be left off, but a number needs to consist of at least one
digit.
The following are all valid numbers:
0
12
-7
0.1
10.
.1
123.
The regular expression -?(\d+\.\d*|\d*\.\d+|\d+)
matches all numbers.
strings
Strings are enclosed by either single ('
) or double quotes ("
). Backslashes
and either type of quote can be escaped by prefixing them with a single
backslash, i.e. the literal notation "\\\""
evaluates to the string \"
.
The following are all valid strings:
"hello world"
'hello world'
"it's a beautiful day"
'it\'s a beautiful day'
"this is a backslash: \\"
"this is a double quote: \""
""
''
symbols
Symbols must start with a letter (a
-z
or A
-Z
) or one of the following
special characters:
- + * /
_ . , =
! ? % $
> < ~
The remaining characters can be letters, special characters from this set, or
digits (0
-9
).
The following are all valid symbols:
helloWORLD
-
/
*dynamic*
*+*
var01
_test
foo$
The regular expression [a-zA-Z\-+*\/_.,=!?%$~><][a-zA-Z0-9\-+*\/_.,=!?%$~><]*
matches all symbols.
cells
Cells consist of any number of subexpressions separated by chunks of whitespace
and enclosed in parentheses ((
and )
). A cell optionally contains a tag
immediately after the opening parenthesis. Whitespace between the opening
parenthesis and the first subexpression or the closing parenthesis and the last
subexpression is optional.
tags
Tags consist of one or more digits (0
-9
) enclosed in square brackets ([
and ]
). [1]
and [255]
are examples of valid tags.
whitespace
The space, tab, newline, and line-feed special characters constitute whitespace and may be repeated any number of times to form a chunk. A chunk of whitespace may also contain any number of comments, but may neither begin nor end with a comment.
comments
A comment begins with #(
and ends with a matching parenthesis )
. Comments
may contain other comments or cells.