第 5 章:表达式与运算符
表达式 (Expressions) 是 Flurry 程序中计算值的基本方式。它们由字面量、变量、常量、运算符和函数调用等组合而成。Flurry 的表达式系统设计旨在提供强大的表达能力,同时通过一致的语法风格(特别是后缀操作)提升代码的可读性和流畅性。
本章将深入探讨 Flurry 中各种表达式的构成、运算符的行为与优先级,以及 Flurry 独特的“取像”操作。
核心概念:
- 表达式求值: 任何表达式最终都会计算出一个值(除非它发散或产生副作用)。
- 运算符: 用于组合或修改值的特殊符号(如
+
,-
,>
,.
)。 - 优先级与结合性: 决定复杂表达式中运算符的计算顺序。Flurry 采用 Pratt 解析器常用的绑定力 (Binding Power) 或优先级方案来处理。
- 后缀风格: Flurry 大量采用后缀运算符和操作(如
.field
,.method()
,.*
,.ref
,'image
),使得链式调用非常自然。 - 无内置位运算符: Flurry 选择不提供传统的位运算符(
&
,|
,^
,~
,<<
,>>
),而是依赖bitvec
抽象视图或标准库函数(如math
包)进行位操作。 - 编译时连接 (
++
):++
运算符专用于编译时连接集合(如str
,meta.List
)。
章节内容:
- 常用运算符: 介绍 Flurry 支持的算术、比较、逻辑等运算符,并重点讨论它们的空格敏感性规则。
- 后缀风格与链式调用: 详细阐述选择运算符 (
.
)、解引用 (.*
)、取引用 (.ref
) 以及其他后缀操作如何促进流畅的链式调用。 - 取像操作 (expr ' image): 深入讲解
'
操作符的用途,以及如何获取表达式的不同“像”。
理解 Flurry 的表达式求值规则和运算符行为是编写任何非平凡程序的基础。其独特的后缀风格和对位运算的处理方式是需要特别注意的设计点。