Sublimetext3 升华文本3 cottle的自定义语法:很难开始

Sublimetext3 升华文本3 cottle的自定义语法:很难开始,sublimetext3,syntax-highlighting,sublime-syntax,Sublimetext3,Syntax Highlighting,Sublime Syntax,我试图为“cottle”(这是一种脚本语言,用于专为Elite:Danger开发的文本到语音应用程序)添加一个“非常简单”的语法亮点。 我想要的(至少在一开始)是有三种不同的颜色:注释、“非字符串”和字符串 我开始尝试ST3wiki、youtube教程和这里的问题。。。。但是我不知道怎么做,因为语言的工作方式。 我会给你举个例子 { everything_between_a_pair_of_brackets_is_code } everything outside all pairs of br

我试图为“cottle”(这是一种脚本语言,用于专为Elite:Danger开发的文本到语音应用程序)添加一个“非常简单”的语法亮点。 我想要的(至少在一开始)是有三种不同的颜色:注释、“非字符串”和字符串

我开始尝试ST3wiki、youtube教程和这里的问题。。。。但是我不知道怎么做,因为语言的工作方式。 我会给你举个例子

{ everything_between_a_pair_of_brackets_is_code }
everything outside all pairs of bracket is a string {_ and this is a comment. It begins with "_" and ends at the closing bracket }
{ This_is_code("but this is a string")
  This_is_still_code("this is also a string {but_this_is_code(\"and a string\")} and this the end of the string")
}
我的问题是如何在我的cottle.sublime语法文件中定义这种“nidification”。我设法得到了评论,但只得到了第一条


-编辑-


这是一个真实的脚本:

{event.item} 
{if event.repairedfully:
    fully repaired
|else:
    partially repaired 
    {Occasionally(2,
        cat(
            OneOf("to ", "at "),
            Humanise(event.health * 100),
            " percent functionality"
        )
    )}
}

{Occasionally(2, 
    cat(OneOf(", ", "and is"), " ready for re-activation")
)}.
此脚本的输出可以是“引擎模块完全修复”或“引擎模块部分修复,并准备重新激活”

请注意短语的最后一点,代码中该点位于最后一个括号之后

这是另一个示例,其中字符串传递给其他字符串中的函数:

{OneOf("{ShipName()} has", "")} 
{OneOf("left supercruise", "{OneOf(\"entered\", \"returned to\", \"dropped to\")} normal space")}
我的问题是:
sublime语法文件是如何处理这种奈德化的?

查看at上的模板语言概述,编写
似乎是一种简单的语法。sublime语法
用于,但由于完全缺乏了解语法文件在ST中如何工作的资源,我能理解,有时开始甚至理解起来都很困难

因此,我冒昧地创建了一个初学者语法定义(周六晚上无聊了一个半小时的结果),您可以使用它并进行处理。请注意,我没有使用这种语言,因此,我只是通过阅读文档和查看代码片段来实现它

你可以在这里找到它的要点()

下面是一个屏幕截图,显示了我使用的配色方案(遵循官方的范围命名指南)

它仍然缺乏对用户定义函数的支持(正如我从文档中了解到的)(可能还有其他一些东西),但也许这是您可以添加到它中的东西

请注意,要使用它,请在
User
包中将文件另存为
Cottle.sublime syntax
。现在突出显示扩展名为
.cottle
的文件(因为我不知道如何创建cottle文件)


语法定义没有使用ST4中添加的任何新功能,因此它在ST3和ST4中的作用应相同。

寻求调试帮助的问题(“为什么此代码不起作用?”)应包括所需的行为、特定问题或错误以及将其复制为格式化文本(而不是图像)所需的最短代码在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:。特别是,请在发布伪代码的同时,发布一些实际代码和
.sublime syntax
文件的内容。是否有多个注释部分?另外,在第4行,为什么要转义
\”和字符串\“
?它位于“代码> {{}} /代码> -分隔代码块.MADDMOM:注释:您想要多少。但没有“阻止评论”。转义引号:'因为它在第一个双引号内(在“This\u is\u still\u code”调用之后)。@MattDMo:关于我的语法文件:它只有10行。。。垃圾我从wiki中的示例中复制了一些代码(关于C语法),试图整理一些东西。我会尽快发布真正的密码。非常感谢!我花了整个星期六(:D)才得出类似的结论(虽然不太准确)。您的示例语法解决了my遇到的许多问题,但主要的困难仍然存在:-“游离文本”(如屏幕截图中的X为负数)不被视为字符串(如果您有类似字符串的内容,则会导致整个高亮显示中断)-“递归”(嵌套?正确的单词是什么?)在语法中:如果在字符串的中间打开一个{你正在启动一个全新的CopyLyCordE1块,里面引用的字符串被漏掉了。就像我说的,我以前从未使用过CoTek(而且可能也不打算在不久的将来使用它)。,所以我不知道这种模板语言的怪癖。语法本身就是一种快速的“组合”类似的东西,我并没有详细讨论过。如果您可以在github gist注释中发布语法失败的示例代码片段,我可能会给出一些提示。完成。在您发布您的注释时,我正在尝试编辑我的注释。