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
Scala组合解析器详解
超级会员免费看
订阅专栏 解锁全文
110

被折叠的 条评论
为什么被折叠?



