# comment

注释

# 运算顺序

  • pre-parse stage
  • parse stage
  • macro stage
  • forward stage
  • rewriting stage

# 预处理器

当以模块导入时

  • 将换行符统一转为 LF
  • 每行末尾的续行标记 \
  • 首行如果是 #! 开头将被移除

因此续行是顶级转义, 能够豁免被转义

因此, 在多行字符串中有如下行为:

string_multi = """
line 1 \
still line 1
line 2 \\
still line 2
line 3 \\\
still line 3
"""

% `\s` become ` `
string_single = "
line 1 still line 1
line 2 till line 2
line 3 \\still line 3
"
assert_equal(string_multi, string_single)

# 解析器

以下语句不能换行

  • 函数语法 expr(a)
  • 索引语法 expr[a]
  • 空格乘法 a b
  • 系数乘法 2x

中缀符号会自动续行, 无论是写末尾还是另一行行首

a = 1
  - 2x + 3x^2

如果想表达它其实是个前缀, 要另起表达式的话可以加个括号

x = 1
(-2x) + 3x^2
% 如果不需要输出可以直接加 `;`
y = 1;
-2y + 3y^2

又想加括号又想续行可以这么写

a = 1 + 
(-2x) + 3x^2