Матч неразрывный пробел в Rascal
В Rascal, как я могу найти неразрывный пробел в определении синтаксиса? Я нашел некоторые из них в коде, который я пытаюсь проанализировать, и хотел бы распознать его как макет.
Однако простое вставление символа в файл Rascal не работает (с или без экранирования с помощью префикса с обратной косой чертой), равно как и "\uc2a0" "\uC2A0", в то время как "c2a0" действительно является способом кодирования символа в файл, который я читаю (согласно плагину Hex Viewer для Sublime Text 3, то есть).
1 ответ
Это кодировка UTF8, которую вы смотрите в файле; который не является кодовыми точками Unicode. Если мы интерпретируем кодировку UTF8 этого символа в 24-битной таблице Unicode, вы получите "슠"
:
rascal>"\uc2a0"
str: "슠"
Неразрывный пробел в стиле escape Unicode Rascal: \u00A0
,
Я узнал, запустив консоль и скопировав / вставив символ из возвышенного в консоль между кавычками:
rascal>" "
str: "\u00a0"
Сопоставить это можно так же, используя регулярное выражение:
rascal>/\u00a0/ := " "
bool: true
Но вы также можете буквально использовать пробельные символы:
rascal>/ / := " "
bool: true
Или используя определение синтаксиса:
rascal>lexical WS = [\u00a0];
ok
rascal>parse(#WS, " ")
WS: (WS) ` `