Матч неразрывный пробел в 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) ` `
Другие вопросы по тегам