我正致力于改进Stata的现有语法,以便在language-stata包的Atom上使用。 Stata代码遵循一种模式:一行中的第一个单词是一个命令,逗号将选项与命令的对象分开。例如,要在没有常量的情况下对x运行y的线性回归,请运行:
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'
}
突出显示文档的第一个单词,而不是其他内容。
有没有人有想法解决这个问题?谢谢!