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

Custom syntax highlighting in Atom

作为自我练习,我开发了一种简单的类汇编语言。我想在 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'
  }
]

variable 中的 $[a-z]? 外,一切正常。据我了解,这应该匹配字符 $ 字面意思,后跟从 az 的任何字母的 0 或 1,这正是我需要的。不幸的是,没有突出显示变量。

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

通常,$ 表示一个字符串的结尾(或一行,它取决于正则表达式修饰符,并且它的行为在各种正则表达式风格中也不同)。使用 1 个斜杠或 2 个斜杠(取决于环境)来转义它。如果不确定,经验法则是将其放入字符 class.