Вы пишете: "Поэтому будет два вида строковых литералов". Неочевидно, что два вида литералов в языке подразумевают, что они должны синтаксически или иначе различаться.

В КП литерные типы определяются вот так:
2.	SHORTCHAR	the characters of the Latin1 character set (0X .. 0FFX)
3.	CHAR	the characters of the Unicode character set (0X .. 0FFFFX)

Тип строкового литерала определяется по его содержимому: если все литеры строки входят в Latin1, то это литерал типа Shortstring (п. 6.6). А далее допускаются неявные преобразования:

## Код:
```
CONST shortstring = 'Make it as simple as possible';
   string = "В Севилье град крупнее, говорят";
VAR ss: ARRAY N OF SHORTCHAR;
   s: ARRAY OF CHAR;
BEGIN
   s := shortstring;  (* неявное приведение типа, СР2 "вписывает" его во время исполнения программы, хотя Сообщение о языке к этому не обязывает и позволяет сделать приведение во время компиляции *)
   ss := shortstring;
   s := string;
   ss := string;   (* недопустимо *)
```


Таким образом, в КП отсутствует необходимость явно указывать тип литерала; фактически, он выводится (собсно об этом в СЯ и сказано в других терминах). Как вам такой подход?