首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反引符号,好还是坏?

反引符号,好还是坏?
EN

Software Engineering用户
提问于 2012-02-07 18:16:55
回答 3查看 524关注 0票数 7

我正在设计一种编程语言,它有三种引用的实体:字符串和C中的字符,以及符号(打算用作查找键的内部字符串等等),我认为这是Lisp最受欢迎的特性之一。目前,我对这些代码有以下语法:

代码语言:javascript
复制
"*" // String
'*' // Character
`*` // Symbol

我很喜欢,但也有一些潜在的问题:

  1. 我被告知,在一些键盘布局上,反引号是一个讨厌的类型。
  2. 反引号和‘不是视觉上最清晰的字符,我有几次发现自己打字’时,我的意思是回引。在我的设置中,这不是一个问题,因为我设置了UltraEdit语法高亮显示,以绿色显示回引符号,因此错误立即显现出来,但我当然不能为人们使用的大多数编辑器提供语法高亮显示,所以至少在早期,大多数用户不会享受这种特殊颜色的好处。

因此,考虑到这些潜在的问题,我想得到一些反馈,人们认为哪种选择更可取:

  1. 保持我现在所使用的语法。
  2. 交换反引号和“,以便”用于符号,而反向引号用于字符常量。
  3. 对于字符常量使用‘for符号@*’(例如,在Linux内核代码中,字符常量比字符串常量少30倍,因此,可以说可以为它们提供更详细的语法),并为其他字符串(可能是原始字符串(大多数转义代码未解释)进行反向引用)。
  4. 字符常量使用‘for符号’,@"*“,并完全放弃使用反引号。
EN

回答 3

Software Engineering用户

回答已采纳

发布于 2012-02-08 21:28:25

我认为潜在的混乱是一个严重的问题。如果您已经发现自己混淆了回引和单引号,那么想想将来有多少代码作者和读者会犯同样的错误。

许多使用反引号作为特殊语法的语言似乎将其保留在相对罕见的用法中。我可以推测原因,但是如果你期望符号会被大量使用,你可以把它当作使用其他语法的暗示。

因此,对于多项选择奖金问题,我更倾向于3号或4号而不是#1或#2,以消除混淆的原因。当你需要一个特殊的商调操作符时,你可以保留回引号.

票数 2
EN

Software Engineering用户

发布于 2012-03-20 17:19:43

Smalltalk还区分了这三种情况,并使用了以下语法:

代码语言:javascript
复制
'strings are in single quotes'
"comments are in double quotes. Yes, comments!"
$a "is the character a, dollar-sign prefixes characters"
#symbol "is a symbol, prefixed by a hash"

除了获得一些符号的潜在困难(抱歉,欧洲同胞!)它确实有一种非常规但令人愉快的语法,即对字符串使用单引号,因为它(在美国键盘上)不需要按移位键才能到达,而且你键入的字符串比字符多得多(使用双引号的注释有点奇怪,但可以说,人们可以忍受较长的注释键笔触,因为它们的输入心态与代码不同。)

确实有几种方法可以处理它,但是请记住每种类型的稀有性和用例。字符串将被大量使用,并且应该具有最简单的语法。字符使用起来比较少见。符号的使用将取决于您的语言允许或需要多少元编程。

您也可以在编译时执行一些技巧,这取决于您可以根据需要通过隐式转换将单个字符字符串转换为char或char到单字符字符串。在大多数高级语言中,直接使用实际的char类型的需求是相当少见的。

另一个选项是使用带标记的字符串。例如,C#有"regular strings"@"non-escaping strings that ignore things like \n"。D语言使用r"this is a string"实现了同样的目的。它们非常适合符号重字符串,如regexp或目录名。字符可以使用c"A",符号可以使用s"symbol"。字母作为运算符是一项棘手的工作,但它为程序员提供了一个非常容易的助记符,而且对于lex来说也不是很难,因为在大多数语言中,没有空格,字符串文字就永远不会直接跟随符号。

票数 0
EN

Software Engineering用户

发布于 2013-02-16 21:17:44

由于char类型的实例只有一个字符长,您真的需要将它用匹配的标记括起来吗?如果您在撇号中括号符号,则只能使用单个回引号在字符前面。如果用户将它们混合在一起,就会出现大的语法错误消息,比如C程序员忘记了结束大括号。

票数 -1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/133785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档