跳转至

词法

空白字符

Lumos 认可的空白字符只有 \x20(空格),\x09(制表符), \x0A(换行符)。
其它任何字符均不会被认为是空白字符。

在每个换行符处增加行号计数,并清零列号,回车符不会影响行号计数。

LF 前以外,其余地方不能出现 CR 字符,否则会报词法错误。

行首的空格和制表符被认为是缩进,不能混用空格和制表符进行缩进,否则会报词法错误。

运算符

对于运算符,我们的处理方法非常简单:

  • 以下字符被允许作为运算符的一部分:! % ^ & * - + = | \ : ; < > , . ? / ~
  • 永远取最长的匹配

也就是说,如果遇到这样的内容 a+-b,它会被解析为 +- 运算符,而不是 + 运算符后跟 - 运算符。
此时如果未定义 +- 运算符,则会报错。

如果我们定义一个运算:

// 我们用 `\mul` 来表示 `*` 运算符
// `\mul_mul` 也就是 `**` 运算符
def \mul_mul(int a, int b) -> int {
    return pow(a, b);
}

剩余内容