我正在尝试为Matlab运算符>=
和<=
获取正确的语法突出显示。目前,只突出显示<
和>
- 而不是=
。但是例如==
突出显示。
我查看了Matlab.tmLanguage
文件,>=
和<=
都包含在运营商正则表达式中。
这里可能有什么问题?
答案 0 :(得分:2)
问题在于完整的正则表达式,可在以下位置找到:
</dict>
<key>operators</key>
<dict>
<key>comment</key>
<string>Operator symbols</string>
<key>match</key>
<string>\s*(==|~=|>|>=|<|<=|&|&&|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*</string>
<key>name</key>
<string>keyword.operator.symbols.matlab</string>
</dict>
问题是or
'ed子表达式(|>|>=|<|<=
)的顺序。例如。 >
在>=
之前匹配,然后根本不匹配。
因此,解决方案是更改子表达式的顺序,首先匹配较长的表达式。即将match
字符串更改为:
\s*(==|~=|>=|>|<=|<|&|&&|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*