2
我正在改进Stata的现有语法以用于Atom,language-stata包。 Stata代码遵循以下模式:一行中的第一个单词是一个命令,一个逗号将选项与命令的对象分开。例如,要在x和y的线性回归没有一个常数,我们可以运行:语法突出显示行中的第一个单词(语法包,用于Atom)
regress y x, noconstant
三重斜线表示该命令在下面的行继续。因此,前面的代码就相当于:
regress x /// COMMENTS
y, /// MORE COMMENTS
noconstant
我认为语法应突出行的每一个第一个字,除非前行包含三斜杠。在上面的两个例子中,它应该突出显示命令regress
,但它不应该在第二个示例中突出显示单词y
或noconstant
。我想像这样的:
- 开始捕捉在一行的开始;
- 突出显示第一个单词;
- 只要行包含三重斜杠就继续捕获;
- 停止当我找到没有三重斜线的行的结尾。
我试过几件事。例如:
{
name: 'comment.line.stata'
match: '///.*'
}
{
begin: '^\\s*(\\w+)'
end: '(?<!///)$'
beginCaptures:
"1":
name: 'support.function.stata'
}
此代码突出显示每行的第一个单词,不管是否在它之前有三重斜杠。另一方面,
{
name: 'comment.line.stata'
match: '///.*'
}
{
begin: '^\\s*(\\w+)'
while: '///'
beginCaptures:
"1":
name: 'support.function.stata'
}
强调文档的第一个字,没有别的。
有没有人有想法解决这个问题?谢谢!
我想更具体的!它听起来如何? –
但是,如果我使用'regress y x,noconstant',它不会识别任何模式。 –
我试图澄清并简单地解决了这个问题。我删除了关于逗号的部分。它看起来更清楚吗? –