Обычные строковые литералы
Заключаются в двойные кавычки (символ
").
Поддерживают управляющие последовательности такие же как в языке C++ (
\n,
\tи т.д.).
"Сырые" строковые литералы
Заключаются в одиночные парные кавычки — символы
‘и
’.
Как такие кавычки набирать на клавиатуре — смотрите здесь.
Если у вас остались сложности с набором символов (Все поддерживаемые в 11l-коде диграфы перечислены здесь.)
‘и
’, можно использовать диграфы
'"и
"'. Однако, обратите внимание, что эти диграфы не являются частью языка 11l. Они существуют только для облегчения/упрощения набора, и будут заменены на
‘и
’в вашем исходном 11l-файле на этапе лексического анализа.
Если в строке присутствуют непарные кавычки, тогда нужно выполнить балансировку строки аналогично тому, как это делается в пк-разметке для вставки HTML-кода (смотри Дополнительные возможности форматирования. "Сырой"\Raw HTML).
Например, есть строка
don’t.
Так как в ней присутствует несбалансированная закрывающая кавычка, добавим балансирующую открывающую кавычку в самое начало строки:
‘don’t
.Сбалансированную строку заключаем в парные кавычки:
‘‘don’t’
.Теперь необходимо как-то показать парсеру, что добавленную слева кавычку не следует включать в строку, так как она нужна только для восстановления баланса. Для этого используется символ машинописного апострофа
', который нужно поставить по одной штуке на каждую балансирующую кавычку [таким образом, один машинописный апостроф "съедает" одну парную кавычку], в данном случае его необходимо поставить в начало строки:
'‘‘don’t’.
Сбалансированную строку (например,
'‘‘don’t’
) можно как есть вставлять в другие строки в парных кавычках:‘text = '‘‘don’t’’.
Многострочные строковые литералы с отступом
Также как в языках Swift и Julia многострочные строковые литералы в 11l могут содержать отступ, чтобы соответствовать окружающему коду.
[Заметьте, что в Swift и Julia то, как работают многострочные строковые литералы, немного отличается: {…}]
Просто добавьте символ
|перед строковым литералом:
V str = |‘First line. Second line.’Это эквивалентно
V str = "First line.\nSecond line."
Многострочные строковые литералы с нулевым отступом
Python | 11l |
---|---|
pqmarkup.py | |
if args_output_html_document: args_outfile.write('''\ <html> <head> ... ''') | I args_output_html_document args_outfile.write(\/‘ <html> <head> ... ’) |
cut_copy_paste_tests.py | |
...: tests = """\ (1) 1. Select THIS ... """ | ... V tests = \/‘ (1) 1. Select THIS ... ’ |
Заметьте, что
\/"..."не имеет смысла, т.к. можно писать так:
tests = "\ ... "А
\/‘...’нужно по той причине, что в 11l нет
"""...""", а многострочные строковые литералы часто содержат двойные кавычки.