首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Scala在标识符中分隔符号和字母,我可以改变这一点吗?

为什么Scala在标识符中分隔符号和字母,我可以改变这一点吗?
EN

Stack Overflow用户
提问于 2013-02-09 00:18:01
回答 1查看 108关注 0票数 3

我正在考虑将Scala用于音乐创作的内部DSL (即DSL实际上是Scala)。我希望使用像锐号♯(U+266F)这样的字符的标识符。看起来这是不可能的:

代码语言:javascript
运行
复制
val c♯0 = 13

不解析。我能得到的最接近的是:

代码语言:javascript
运行
复制
val c0_♯ = 13

我不喜欢这个。强制标识符这样命名的理由是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 00:26:09

Scala的语法试图迎合许多相互冲突的需求。为了使“类似运算符”的方法名称(如+/::)和两边的参数之间的空格成为可选的,有必要提供一种方法来表示给定名称包含标点符号和字母数字字符的混合。

请记住,内部DSL不是新语言!它们充其量只是一种新语言的幻想。它们仍然是Scala。

如果您想要完全自由地控制您提供给用户的语言,您可以编写一个组合子解析器或使用外部解析器生成器。

对于在Scala中从事语言处理的任何人,我强烈建议您在编写自己的专注于单一用途的语言处理代码之前,先检查一下Kiama。Kiama是一颗宝石!

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

https://stackoverflow.com/questions/14776875

复制
相关文章

相似问题

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