Syntax 什么';在字符文字中使用尾随撇号的好处是什么

Syntax 什么';在字符文字中使用尾随撇号的好处是什么,syntax,character,language-design,literals,Syntax,Character,Language Design,Literals,我正在编写自己的编程语言,现在正在重新考虑语法的许多方面。在大多数语言中,令我困扰的是字符文字中的尾随撇号。 示例 带尾随斜杠:'n' 不带尾随斜杠:'n 为什么新语言(如rust f.e.)继续使用尾随撇号? 看到这样的语言修复了我们在旧语言中遇到的问题(好吧,尾随撇号并不是一个真正的问题),我想保留尾随撇号肯定有好处。如果它支持可读性,我会同意保留它,但我不认为它支持可读性。 以下是一些更奇特的例子: '\nvs'\n' '\rvs'\r' '\tvs'\t' '\\vs'\\' \'

我正在编写自己的编程语言,现在正在重新考虑语法的许多方面。在大多数语言中,令我困扰的是字符文字中的尾随撇号。

示例
带尾随斜杠:
'n'

不带尾随斜杠:
'n


为什么新语言(如rust f.e.)继续使用尾随撇号?
看到这样的语言修复了我们在旧语言中遇到的问题(好吧,尾随撇号并不是一个真正的问题),我想保留尾随撇号肯定有好处。如果它支持可读性,我会同意保留它,但我不认为它支持可读性。
以下是一些更奇特的例子:

  • '\n
    vs
    '\n'
  • '\r
    vs
    '\r'
  • '\t
    vs
    '\t'
  • '\\
    vs
    '\\'
  • \'
    vs
    \''
  • “\”
    vs
    “\”
我们是出于历史原因保留这种语法,还是还有更多我不明白的地方?
请注意,字符串文字中的尾随引号是必需的。

以下是我的想法:

  • 看到两个匹配的引号(或撇号)更直观 而不仅仅是一个
  • 使用两个匹配的引号可能会更容易一些 词法分析和解析,特别是在小型工具(如编辑器插件、高亮显示程序)和web应用程序中
  • 一些文字,如
    '\'
    可能看起来很混乱–许多人可能认为这代表了
    \
    (反斜杠)
  • 类似语言(例如C/C++/C#如果是类似C的语言)的一些高亮显示程序对字符文本使用与字符串文本相同的规则,因此它们可能会高亮显示第一个引号后的所有内容,直到找到另一个字符文本(可能高亮显示多行)。这可能是一个新语言的问题,因为这些语言没有自己的流行代码编辑器高亮显示工具
  • 例如:(;)

    //通常如下所示:
    变量a='\n';//评论
    变量s2='r'。重复(5)。替换('r','r');//评论
    //只有一个“单引号”和一些高亮显示:
    变量a='\n;//评论
    变量b='\';//评论
    变量s1='a+'b+'c//注释
    因为

  • 您不希望字符文字中的错误改变整个程序其余部分的含义。例如,有向图和三角图,因此可能的字符文本空间很大,指定无效字符的方法也很多。出于扫描或解析目的,您不希望无效字符后面的部分成为程序其余部分的一部分。你想知道在哪里停

  • 您并不希望法律字符文字规则成为语言词汇规范的一部分,因为它必须非常稳定。您希望能够添加新的有向图、三角图等,而无需重新指定语言的词汇规则,也无需更改现有程序的含义


  • 这个想法很有趣,但似乎不能用它来表示空格字符。

    不要在这里张贴文本图片。张贴文本。浪费你的时间和我们的带宽。@EJP好的,经过编辑,但是highlighter的工作方式与其他一些稍有不同,所以这个问题并不完全可见。你在第二段的第一句话中漏掉了一个字吗?还有,什么语言支持有向图作为字符文字?从未见过它,想知道它是什么样子。@NoelWidmer(1)是的,请参阅编辑;(2)C、C++、java、…code>\r
    是一个有向图,Java的
    \u0000
    是一个七位图。您的输入非常好。这就是我决定不再遵循这个概念的原因。