【发布时间】:2021-04-09 19:47:31
【问题描述】:
我正在尝试为“cottle”(这是一种用于 Elite:Dangerous 的文本转语音应用程序中使用的脚本语言)制作一个“非常简单”的语法高亮显示。 我想要的(至少在开始时)就是拥有三种不同的颜色:注释、“非字符串”和字符串。
我开始尝试使用 ST3 wiki、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-syntax 文件中定义这种“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-syntax 文件如何处理这种修改?
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)应包括所需的行为、特定问题或错误和以格式化文本(不是图像)在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:minimal reproducible example。特别是,请连同您的伪代码一起发布一些实际代码和您的
.sublime-syntax文件的内容。 -
评论区有多个吗?另外,在第 4 行,为什么
\"and a string\"被转义了?它位于{ }-delimited 代码块的中间。 -
MaddDMo:评论:你想要多少。但没有“块 cmets”。转义引号:'因为它在第一个双引号内(在 "This_is_still_code" 调用之后)。
-
@MattDMo:关于我的语法文件:只有 10 行......垃圾?我从 wiki 中的示例中复制了一些代码(关于 C 语法),试图整理出一些东西。我会尽快发布真正的 Cottle 代码。
标签: sublimetext3 syntax-highlighting sublime-syntax