Обычные строковые литералы



Заключаются в двойные кавычки (символ
"
).
Поддерживают управляющие последовательности такие же как в языке 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."


Многострочные строковые литералы с нулевым отступом



Python11l
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 нет
"""..."""
, а многострочные строковые литералы часто содержат двойные кавычки.