Syntax 除了Lua之外,还有哪些语言支持各种各样的字符串分隔符?

Syntax 除了Lua之外,还有哪些语言支持各种各样的字符串分隔符?,syntax,language-design,Syntax,Language Design,my_lua_string=[=[这是一个用长括号分隔的字符串;它包含其他有效的长括号,如[[This]](或This:][=]),但它们被忽略,因为lua查找与开头分隔符匹配的长括号。]=] Lua支持我在任何其他语言中都没有见过的东西:所谓的“长括号”,有时也称为“长字符串”或“双括号”。有效的长括号对有很多种:[[my multiline string]],[=[…]=],[=[…]=],等等。您可以将它们用于多行注释,如:--[[…],--[=[…]=],等等。这意味着可以创建任何字符串

my_lua_string=[=[这是一个用长括号分隔的字符串;它包含其他有效的长括号,如[[This]](或This:][=]),但它们被忽略,因为lua查找与开头分隔符匹配的长括号。]=]

Lua支持我在任何其他语言中都没有见过的东西:所谓的“长括号”,有时也称为“长字符串”或“双括号”。有效的长括号对有很多种:
[[my multiline string]]
[=[…]=]
[=[…]=]
,等等。您可以将它们用于多行注释,如:
--[[…]
--[=[…]=]
,等等。这意味着可以创建任何字符串文字,也可以对任何代码进行注释,而无需转义内容:您只需选择一个带有大量等号的长括号,这样结束分隔符就不会出现在字符串中

还有其他语言具有无限可扩展的字符串定界符吗?我知道Perl的q风格,但这可能仅限于单个字符:
q#…#
qx…x
,等等。我对解决方案特别感兴趣,像Lua的一样,这些解决方案超越了单字符定界符。

(出于好奇:当我尝试使用
ssh'multiple;commands'
来ssh多个命令时,这个问题冒了出来,其中一个命令是调用
sudo sh-c'…
。我认为shell是唯一一个我经常手动创建带有多级引号的字符串文本的环境。)


对于那些想更多了解Lua长括号的人:

  • (搜索“长括号”)
  • 示例位于(搜索“嵌套引号”)
  • 示例at(还包含一个多行注释示例)
有效的Lua注释和有效的Lua字符串:

-->[[这将注释出我的\u lua\u字符串的赋值
my_lua_string=[==[一个[=[内部]=]两个]=]
]]
--这是一个用长括号分隔的字符串
[=[1]]2]=]
-->“一]]二”
PostgreSQL允许:

它最常用于定义存储过程,如下所示(请参见
$$
):

CREATE或REPLACE函数increment(i integer)将整数返回为$myAddOne$
开始
返回i+1;
结束;
$myAddOne$LANGUAGE plpgsql;


但是,我不知道还有其他的。

UNIX shell(及其衍生物)、Perl、PHP和Ruby(至少)支持任何东西都可以用作定界标记。

Java允许通过
Java.util.Scanner
实现这一点。太宽了。@EJP读取字符串似乎是为了分析字符串,而不是引用字符串文本的语法构造。似乎不适用:“如果你的问题可以用整本书来回答,或者有许多有效的答案(但无法确定哪一个答案是正确的,如果有的话),那么它对我们的格式来说可能太宽泛了。”这个问题是关于一个明显罕见的句法结构;它不需要一本书,也没有得到许多有效的答案。