String literals

String literals exist for specifying of some string values in an Ü program. They are declared with "".

"simple string"
"в строке может встречаться почти любой юникод"

For some characters escaping is used:

"\b return"
"\t tabulation"
"\n newline"
"\r carriage return"
"\f new page"
"\" quote"
"\\ backslash"
"\0 binary zero"

It’s also possible to specify symbol code via its hexadecimal number:

"\u0000 zero"
"\u00DC Ü"
"\u0068 h"

String literal type

A string literal is an array with one of types char8, char16 or char32 as element type. Array size is determined by the literal size. By-default element type is char8, but it’s possible to specify it via special suffixes - u8 for char8, u16 for char16, u32 for char32. u8 means UTF-8, u16 - UTF-16, u32 - UTF-32.

"abc абв"u8 // UTF-8 string, array element type is "char8"
"abc абв"u16 // UTF-16 string, array element type is "char16"
"abc абв"u32 // UTF-32 string, array element type is "char32"

Terminating zero

Unlike in C, C++ and other languages string literals in Ü are NOT terminating with zero. If terminating zero is required, for C code interaction for example, it may be explicitly specified via \0 at the literal end.

"/etc/shadow" // No terminating zero, string size is 11
"/etc/shadow\0" // There is a terminating zero, string size is 12
"" // No terminating zero, string size is 0
"\0" // There is a terminating zero, string size is 1

String literals for single character

A string literal specifies usually an array of symbols. But if it is necessary to specify a literal for a single symbol, one of special suffixes c8, c16, c32 may be used. Full type names as suffixes may be used too - char8, char16, char32.

"Q"c8 // char8
"~"char8 // char8
"Ё"c16 // char16
"й"char16 // char16
"\u00DC"c32 // char32
"ß"char32 // char32