【发布时间】:2020-02-19 00:46:46
【问题描述】:
我需要编写一个词法分析器来正确突出我的命令行工具命令。
$ dvc add file.csv
$ dvc pipeline list
所以该命令以dvc 开头,它可能有一个或两个子命令——分别是add 或pipeline list。
因此,它应该分别在第一种和第二种情况下突出显示dvc add 和dvc pipeline list。
contains: [
{
begin: /^\s*\$\s(dvc|git) [a-z-]+/,
returnBegin: true,
contains: [
{
begin: /dvc [a-z-]+ ?/,
lexemes: '[a-z-]+',
keywords: {
built_in:
'dvc'
},
contains: [
{
begin: /\w+(?![\S])/,
keywords: {
built_in: 'list'
}
}
],
className: 'strong'
}
]
}
]
它匹配dvc pipeline list,即使父正则表达式,即/^\s*\$\s(dvc|git) [a-z-]+/ 应该只匹配到dvc pipeline。它究竟是如何运作的?
/dvc [a-z-]+ ?/ 如何覆盖它并继续匹配表达式?
请在此处参考此库文档:https://highlightjs.readthedocs.io/en/latest/reference.html
【问题讨论】:
-
请为该问题提供更多背景信息 - 例如,链接到荧光笔文档。
-
你能创建一个jsfiddle吗?这将使交互式调查问题变得容易。
-
lexemes: '[a-z-]+',是做什么的? -
@ColdCerberus 我认为它可以匹配关键字。 highlightjs.readthedocs.io/en/latest/reference.html#lexemes
-
我明白了。另外,您是否确认
\W或\S不会导致问题?之前有关于这些的错误
标签: javascript syntax-highlighting highlight highlight.js dvc