作为一种自我练习,我开发了一种简单的汇编语言。我想在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]?
中的variable
外,一切正常。据我了解,这应该与字符$
字面匹配,后跟a
到z
中任意字母的0或1,这就是我需要的。不幸的是,没有突出显示变量。
答案 0 :(得分:2)
您可以安全地使用[$][a-z]?
,因为在字符类(在方括号[...]
中定义的那些正则表达式构造)中,特殊的正则表达式元字符(或者有时称为魔术字符) )不必转义。
通常,$
表示字符串的结尾(或一行,它取决于正则表达式修饰符,并且它的行为在各种正则表达式之间有所不同)。使用1斜杠或2斜杠(取决于环境)进行转义。如果您不确定,经验法则是将其放入角色类。