# 解析 Erg 语言
## 处理空白
在 Erg 的语法中,特别的是 space-sensitive(根据空白进行区分)这一点。这是为了弥补的省略导致的表现力下降。同样的语法也可以在可以省略的 Nim 中看到。
```erg
f +1 == f(+1)
f + 1 == `+`(f, 1)
f (1,) == f((1,))
f(1,) == f(1)
(f () -> ...) == f(() -> ...)
(f() -> ...) == (f() -> ...)
```
## 左侧值,右侧值
在 Erg 中,所谓左边值并不是的左侧这样简单的值。实际上,的左侧也存在右边值(非常容易混淆),的右侧也存在左边值。甚至在右边值中存在左边值。
```erg
# iは左辺値、Array(Int)と[1, 2, 3]は右辺値
i: Array(Int) = [1, 2, 3]
# `[1, 2, 3].iter().map i -> i + 1`は右辺値だが、->の左側のiは左辺値
a = [1, 2, 3].iter().map i -> i + 1
# {x = 1; y = 2}は右辺値だが、x, yは左辺値
r = {x = 1; y = 2}
```
左边值、右边值的正确定义是“如果可以评价的话是右边值,如果不是的话是左边值”。以这一代码为例。第 2 个是可以评价的右边值,第 1 个是左边值。