作为 self 练习,我开发了一种简单的类似汇编语言。我想在 Atom 中为此添加语法突出显示。我的命令、注释和文字正确突出显示,但由于某种原因我的变量没有突出显示。
这是该语言的示例:
# comment
cmd $v 1234 # comment
mov $ $v
其中 $v
和 $
是变量,cmd
和 mov
是命令。
这是我的 .cson
用于突出显示:
'fileTypes': [
'yasa'
]
'scopeName': 'source.yasa'
'name': 'yasa'
'patterns': [
{
'comment':'command'
'match':'^[a-z]{3}'
'name':'support.function.builtin.yasa'
}
{
'comment':'variable'
'match':'\$[a-z]?'
'name':'variable.other.normal.yasa'
}
{
'comment':'literal'
'match':'[ 0-9]+'
'name':'constant.numeric.yasa'
}
{
'comment':'comment'
'match': '#.*'
'name':'comment.line.number-sign.yasa'
}
]
除了变量
中的\$[a-z]?
之外,一切正常。据我了解,这应该与字符 $
字面匹配,后跟 0 或 1 个从 a
到 z
的任何字母,这就是我需要。不幸的是,变量没有突出显示。
最佳答案
您可以安全地使用[$][a-z]?
,因为在字符类内(那些在方括号内定义的正则表达式构造[...]
)特殊正则表达式元字符(或有时称为魔术字符)不必转义。
通常,$
表示字符串的结尾(或行,它取决于正则表达式修饰符,并且其行为在各种正则表达式风格之间也有所不同)。使用 1 个斜杠或 2 个斜杠可以对其进行转义(取决于环境)。如果您不确定,经验法则是将其放入字符类中。
关于regex - Atom 中的自定义语法高亮显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35054971/