我遇到的问题是VSCode语法突出显示是识别字符串中的数值。我的印象是,当开始/结束捕获发生时,其中的所有内容都被视为字符串,后续规则将不会执行。
在我的语法文件中,我有以下定义:
{
"name": "string.quoted.single.proc",
"begin": "'",
"beginCaptures": { "0": { "name": "punctuation.definition.quotes.begin.single.proc" } },
"end": "'",
"endCaptures": { "0": { "name": "punctuation.definition.quotes.end.single.proc" } },
"patterns": [{
"include": "$self"
}]
},
{
"name": "constant.numeric.floating-point.proc",
"match": "(\\.\\d+([Ee][-+]\\d+)?i?)\\b|\\b\\d+\\.\\d*(([Ee][-+]\\d+)?i?\\b)?"
},
{
"name": "constant.numeric.integer.proc",
"match": "\\b((0x[0-9a-fA-F]+)|(0[0-7]+i?)|(\\d+([Ee]\\d+)?i?)|(\\d+[Ee][-+]\\d+i?))\\b"
},
但是,当我有如下文字时:
Parse( $year & '-01-01', 'yyyy-MM-dd' );
两个" 01"值突出显示为数字文字。
在数字常量匹配表达式中,如果数字在引号内,我是否必须明确过滤掉?
答案 0 :(得分:0)
我想我刚刚意识到了自己的问题。问题是由于
"patterns": [{
"include": "$self"
}]
一旦我删除了内部模式匹配(即用于转义序列匹配),它就可以工作了。但是,我想我不明白这种模式在数字文字规则方面是如何工作的。