在Rascal中,如何在语法定义中匹配非中断空格?我在代码中找到了一些我想要分析的内容,并希望将其识别为布局。
然而,只是将字符粘贴到Rascal文件中是不起作用的(有或没有通过前缀反斜杠转义),也不是“\ uc2a0”“\ uC2A0”,而“c2a0”确实是字符的方式在我正在阅读的文件中编码(根据Sublime Text 3的Hex Viewer插件,即)。
答案 0 :(得分:1)
这是您在文件中查看的UTF8编码;这不是unicode代码点。如果我们在24位unicode表中解释此字符的UTF8编码,则会得到"슠"
:
rascal>"\uc2a0"
str: "슠"
unicode Rascal转义样式中的不间断空格是:\u00A0
。
我通过启动控制台并将字符从sublime复制/粘贴到引号之间的控制台中找到:
rascal>" "
str: "\u00a0"
匹配它可以使用正则表达式完成:
rascal>/\u00a0/ := " "
bool: true
但你也可以使用空格字符:
rascal>/ / := " "
bool: true
或者使用语法定义:
rascal>lexical WS = [\u00a0];
ok
rascal>parse(#WS, " ")
WS: (WS) ` `