Atom中的自定义语法突出显示

时间:2016-01-28 07:12:25

标签: regex syntax-highlighting atom-editor

作为一种自我练习,我开发了一种简单的汇编语言。我想在Atom中为此添加语法高亮。我有正确突出显示的命令,注释和文字,但由于某种原因,我的变量没有突出显示。

以下是该语言的示例:

# comment
cmd $v 1234    # comment
mov $ $v

$v$是变量,cmdmov是命令。

以下是我的.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外,一切正常。据我了解,这应该与字符$字面匹配,后跟az中任意字母的0或1,这就是我需要的。不幸的是,没有突出显示变量。

1 个答案:

答案 0 :(得分:2)

您可以安全地使用[$][a-z]?,因为在字符类(在方括号[...]中定义的那些正则表达式构造)中,特殊的正则表达式元字符(或者有时称为魔术字符) )不必转义。

通常,$表示字符串的结尾(或一行,它取决于正则表达式修饰符,并且它的行为在各种正则表达式之间有所不同)。使用1斜杠或2斜杠(取决于环境)进行转义。如果您不确定,经验法则是将其放入角色类。