2 Lexical syntax
2.1 Identifiers
Name s, used for variables, functions, structs, classes, interfaces, fields, and methods, must start with a letter, followed by 0 or more letters or digits. The last character also may be ? or !.
2.2 Numeric literals
Numeric literals include:
Decimal integers: 0, 3, 18446744073709551617
Hexadedecimal, octal, and binary integers: 0xFFFF00, 0o0177, 0b011010010
Floating point: 3.5, 6.02E23, 1e-12, inf, nan
2.3 String literals
String literals are delimited by either single or double quotes:
def does_not_matter(double): if double: return "This is the same string." else: return 'This is the same string.'
The contents of each kind of string is treated the same, except that each kind of quotation mark can contain the other kind unescaped:
def does_matter(double): if double: return "This isn't the same string." else: return '"This is not the same string" isn\'t the same string.'
Strings cannot contain newlines directly, but can contain newline characters via the escape code \n. Other escape codes include:
\a for ASCII alert (also \x07)
\b for ASCII backspace (also \x08)
\f for ASCII formfeed (also \x0C)
\n for ASCII newline (also \x0A)
\r for ASCII carriage return (also \x0D)
\t for ASCII tab (also \x09)
\v for ASCII vertical tab (also \x0B)
\xhh in hex, for example \x0A is newline
\ooo in octal, for example \011 is tab
A backslash immediately followed by a newline causes both characters to be ignored, which provides a way to wrap long strings across lines.
Any other character following a backslash stands for itself.
An alternative form for string literals uses three quotation marks of either kind. The contents of such a string are treated literally, rather than interpreting escapes, and they may contain any characters except the terminating quotation mark sequence.
let a_long_string = '''This string can contain ' and " and even """ and newlines. Just not '' and one more.'''
2.4 Comments
A comment in DSSL2 starts with the # character and continues to the end of the line.
Long string literals can also be used to comment out long blocks of code.