57、Scala组合解析器的实现与应用

Scala组合解析器详解

Scala组合解析器的实现与应用

1. 符号名与字母名的选择

在编写解析器时,符号名和字母名的选择会影响代码的可读性和可理解性。以下是选择时的一些建议:
- 通用含义 :当符号名已有普遍认可的含义时,使用符号名。例如,进行数值加法时,使用 + 而非 add
- 普通读者 :若希望代码能让普通读者轻松理解,优先选择字母名。
- 特定领域库 :对于特定领域的库,若使用符号名能显著提高可读性,且不期望普通读者能立即理解代码,可选择符号名。

在解析器组合器的场景中,这是一种高度特定领域的语言,即使使用字母名,普通读者也可能难以理解。而对于专家来说,符号名在可读性上有明显优势,因此使用符号名是合理的。

以下是一个示例,展示了使用字母名和符号名编写的算术表达式解析器的区别:

// 使用字母名的假设示例
class ArithHypothetical extends JavaTokenParsers {
  def expr: Parser[Any] =
    term andThen rep(("+" andThen term) orElse
      ("-" andThen term))
  def term: Parser[Any] =
    factor andThen rep(("*" andThen factor) orElse
      ("/" andThen factor))
  d
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值