@mirascript/help 0.1.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/index.d.ts +79 -0
  2. package/dist/index.js +78 -0
  3. package/package.json +21 -0
  4. package/scripts/build.js +165 -0
  5. package/src/keyword/and.md +26 -0
  6. package/src/keyword/break.md +32 -0
  7. package/src/keyword/case.md +16 -0
  8. package/src/keyword/const.md +10 -0
  9. package/src/keyword/continue.md +14 -0
  10. package/src/keyword/effect.md +6 -0
  11. package/src/keyword/else.md +32 -0
  12. package/src/keyword/false.md +5 -0
  13. package/src/keyword/finally.md +6 -0
  14. package/src/keyword/fn.md +35 -0
  15. package/src/keyword/for.md +43 -0
  16. package/src/keyword/global.md +16 -0
  17. package/src/keyword/handle.md +6 -0
  18. package/src/keyword/if.md +40 -0
  19. package/src/keyword/in.md +44 -0
  20. package/src/keyword/inf.md +10 -0
  21. package/src/keyword/is.md +11 -0
  22. package/src/keyword/let.md +11 -0
  23. package/src/keyword/loop.md +13 -0
  24. package/src/keyword/match.md +18 -0
  25. package/src/keyword/mod.md +6 -0
  26. package/src/keyword/mut.md +25 -0
  27. package/src/keyword/nan.md +10 -0
  28. package/src/keyword/nil.md +11 -0
  29. package/src/keyword/not.md +26 -0
  30. package/src/keyword/op.md +6 -0
  31. package/src/keyword/or.md +26 -0
  32. package/src/keyword/perform.md +6 -0
  33. package/src/keyword/pub.md +6 -0
  34. package/src/keyword/resume.md +6 -0
  35. package/src/keyword/return.md +12 -0
  36. package/src/keyword/true.md +5 -0
  37. package/src/keyword/try.md +6 -0
  38. package/src/keyword/type.md +10 -0
  39. package/src/keyword/underscore.md +16 -0
  40. package/src/keyword/use.md +6 -0
  41. package/src/keyword/where.md +6 -0
  42. package/src/keyword/while.md +12 -0
  43. package/src/operator/arrow.md +6 -0
  44. package/src/operator/assign.md +23 -0
  45. package/src/operator/asterisk.md +9 -0
  46. package/src/operator/asterisk_assign.md +11 -0
  47. package/src/operator/brace.md +26 -0
  48. package/src/operator/bracket.md +32 -0
  49. package/src/operator/caret.md +10 -0
  50. package/src/operator/caret_assign.md +11 -0
  51. package/src/operator/colon.md +29 -0
  52. package/src/operator/colon_colon.md +10 -0
  53. package/src/operator/comma.md +13 -0
  54. package/src/operator/dot.md +15 -0
  55. package/src/operator/equal.md +43 -0
  56. package/src/operator/exclamation.md +23 -0
  57. package/src/operator/greater.md +10 -0
  58. package/src/operator/greater_equal.md +9 -0
  59. package/src/operator/half_open_range.md +12 -0
  60. package/src/operator/less.md +9 -0
  61. package/src/operator/less_equal.md +9 -0
  62. package/src/operator/logical_and.md +9 -0
  63. package/src/operator/logical_and_assign.md +11 -0
  64. package/src/operator/logical_or.md +9 -0
  65. package/src/operator/logical_or_assign.md +11 -0
  66. package/src/operator/minus.md +10 -0
  67. package/src/operator/minus_assign.md +11 -0
  68. package/src/operator/not_equal.md +10 -0
  69. package/src/operator/null_coalescing.md +10 -0
  70. package/src/operator/null_coalescing_assign.md +14 -0
  71. package/src/operator/paren.md +39 -0
  72. package/src/operator/percent.md +9 -0
  73. package/src/operator/percent_assign.md +11 -0
  74. package/src/operator/plus.md +10 -0
  75. package/src/operator/plus_assign.md +11 -0
  76. package/src/operator/question.md +9 -0
  77. package/src/operator/question_colon.md +12 -0
  78. package/src/operator/semicolon.md +13 -0
  79. package/src/operator/slash.md +9 -0
  80. package/src/operator/slash_assign.md +11 -0
  81. package/src/operator/spread_range.md +31 -0
  82. package/src/operator/tilde_equal.md +24 -0
  83. package/src/operator/tilde_not_equal.md +10 -0
@@ -0,0 +1,9 @@
1
+ ---
2
+ token: '&&'
3
+ ---
4
+
5
+ `&&` 是短路逻辑与,操作数必须是 `boolean`。
6
+
7
+ ```mira
8
+ false && (1 / 0); // 右侧不会被求值
9
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '&&='
3
+ ---
4
+
5
+ `&&=` 是短路复合赋值,只有当左侧为 `true` 时才会计算并赋值右侧。
6
+
7
+ ```mira
8
+ let mut b = true;
9
+ b &&= false;
10
+ // b == false
11
+ ```
@@ -0,0 +1,9 @@
1
+ ---
2
+ token: '||'
3
+ ---
4
+
5
+ `||` 是短路逻辑或,操作数必须是 `boolean`。
6
+
7
+ ```mira
8
+ true || (1 / 0); // 右侧不会被求值
9
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '||='
3
+ ---
4
+
5
+ `||=` 是短路复合赋值,只有当左侧为 `false` 时才会计算并赋值右侧。
6
+
7
+ ```mira
8
+ let mut b = false;
9
+ b ||= true;
10
+ // b == true
11
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ token: '-'
3
+ ---
4
+
5
+ `-` 用于减法(中缀)或一元负号(前缀)。
6
+
7
+ ```mira
8
+ 5 - 2; // 3
9
+ -1; // -1
10
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '-='
3
+ ---
4
+
5
+ `-=` 是复合赋值,`x -= y` 等价于 `x = x - y`。
6
+
7
+ ```mira
8
+ let mut x = 3;
9
+ x -= 1;
10
+ // x == 2
11
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ token: '!='
3
+ ---
4
+
5
+ `!=` 判断两个值是否不相等,等价于 `!(x == y)`。
6
+
7
+ ```mira
8
+ 1 != 2; // true
9
+ 1 != 1; // false
10
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ token: '??'
3
+ ---
4
+
5
+ `??` 是空合并,当左侧为 `nil` 时返回右侧,否则返回左侧。
6
+
7
+ ```mira
8
+ nil ?? 1; // 1
9
+ 0 ?? 1; // 0
10
+ ```
@@ -0,0 +1,14 @@
1
+ ---
2
+ token: '??='
3
+ ---
4
+
5
+ `??=` 是空合并复合赋值,仅当左侧为 `nil` 时才会赋值右侧。
6
+
7
+ ```mira
8
+ let mut n = nil;
9
+ n ??= 5;
10
+ // n == 5
11
+
12
+ n ??= 10;
13
+ // n 仍然是 5
14
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ token: ['(', ')']
3
+ ---
4
+
5
+ `( )` 用于分组表达式、函数调用参数列表,以及记录字面量。
6
+
7
+ ---
8
+
9
+ 分组表达式,控制计算顺序:
10
+
11
+ ```mira
12
+ let result = (1 + 2) * 3; // 先计算 1 + 2,然后乘以 3
13
+ ```
14
+
15
+ ---
16
+
17
+ 函数声明和调用:
18
+
19
+ ```mira
20
+ fn add(a, b) { a + b }
21
+ let sum = add(1, 2);
22
+ ```
23
+
24
+ ---
25
+
26
+ 记录字面量:
27
+
28
+ ```mira
29
+ let record = (a: 1, b: 2);
30
+ let empty = (); // 空记录
31
+ ```
32
+
33
+ ---
34
+
35
+ 对于省略键名的单元素记录,必须添加逗号以区别于分组表达式。
36
+
37
+ ```mira
38
+ let single = (1,)
39
+ ```
@@ -0,0 +1,9 @@
1
+ ---
2
+ token: '%'
3
+ ---
4
+
5
+ `%` 用于取余。
6
+
7
+ ```mira
8
+ 5 % 2; // 1
9
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '%='
3
+ ---
4
+
5
+ `%=` 是复合赋值:`x %= y` 等价于 `x = x % y`。
6
+
7
+ ```mira
8
+ let mut x = 5;
9
+ x %= 2;
10
+ // x == 1
11
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ token: '+'
3
+ ---
4
+
5
+ `+` 用于加法(中缀)或一元正号(前缀)。
6
+
7
+ ```mira
8
+ 1 + 2; // 3
9
+ +1; // 1
10
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '+='
3
+ ---
4
+
5
+ `+=` 是复合赋值,`x += y` 等价于 `x = x + y`。
6
+
7
+ ```mira
8
+ let mut x = 1;
9
+ x += 2;
10
+ // x == 3
11
+ ```
@@ -0,0 +1,9 @@
1
+ ---
2
+ token: '?'
3
+ ---
4
+
5
+ `?` 用于条件表达式(三元表达式):`cond ? thenExpr : elseExpr`。
6
+
7
+ ```mira
8
+ fn sign { it > 0 ? 1 : it < 0 ? -1 : 0 }
9
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ token: '?:'
3
+ ---
4
+
5
+ `?:` 用于记录字面量的“可选字段”,当值为 `nil` 时省略该字段。
6
+
7
+ ```mira
8
+ (a?: 1, b?: nil); // (a: 1)
9
+
10
+ // 省略不会删除已经通过展开引入的同名字段
11
+ (..(a: 1), a?: nil); // (a: 1)
12
+ ```
@@ -0,0 +1,13 @@
1
+ ---
2
+ token: ';'
3
+ ---
4
+
5
+ `;` 用于结束语句。MiraScript 以表达式为主,但在多语句块中常用 `;` 分隔。
6
+
7
+ ```mira
8
+ let sum = {
9
+ let x = 1;
10
+ let y = 2;
11
+ x + y
12
+ };
13
+ ```
@@ -0,0 +1,9 @@
1
+ ---
2
+ token: '/'
3
+ ---
4
+
5
+ `/` 用于除法。
6
+
7
+ ```mira
8
+ 6 / 3; // 2
9
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ token: '/='
3
+ ---
4
+
5
+ `/=` 是复合赋值,`x /= y` 等价于 `x = x / y`。
6
+
7
+ ```mira
8
+ let mut x = 6;
9
+ x /= 3;
10
+ // x == 2
11
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ token: '..'
3
+ ---
4
+
5
+ `..` 表示闭区间范围,或在数组/记录字面量及函数调用中表示展开。
6
+
7
+ ---
8
+
9
+ 表示数组字面量、切片和循环的范围:
10
+
11
+ ```mira
12
+ let arr = [1..3]; // arr = [1, 2, 3]
13
+ let slice = arr[0..1]; // slice = [1, 2]
14
+
15
+ for i in 1..3 {
16
+ // i 依次为 1, 2, 3
17
+ }
18
+ ```
19
+
20
+ ---
21
+
22
+ 展开数组/记录或函数调用:
23
+
24
+ ```mira
25
+ let arr = [1, ..[2, 3]]; // arr = [1, 2, 3]
26
+ let rec1 = (a: 1, ..(b: 2, c: 3)); // rec1 = (a: 1, b: 2, c: 3)
27
+ // 同名键以最后一个为准
28
+ let rec2 = (..(1, 2), ..(3, 4, 5)); // rec2 = (0: 3, 1: 4, 2: 5)
29
+
30
+ let result = sum(..[1, 2, 3]); // 等同于 sum(1, 2, 3)
31
+ ```
@@ -0,0 +1,24 @@
1
+ ---
2
+ token: '=~'
3
+ ---
4
+
5
+ `=~` 是“近似相等”,用于数值容差比较和字符串归一化比较。
6
+
7
+ ---
8
+
9
+ 对于 `number` 类型,当两个操作数的相对误差**或**绝对误差小于 `1e-15` 时,返回 `true`,否则返回 `false`。
10
+
11
+ 如果其中一个操作数为 `number` 类型,另一个操作数在比较前也会自动转换为 `number` 类型。
12
+
13
+ ```mira
14
+ 0.1 + 0.2 =~ 0.3; // true
15
+ 1 =~ "1"; // true
16
+ ```
17
+
18
+ ---
19
+
20
+ 对于 `string` 类型,`=~` 运算符进行大小写不敏感的[正规化(NFC)](https://unicode.org/reports/tr15/)比较。
21
+
22
+ ```mira
23
+ "café" =~ "CAFÉ"; // true
24
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ token: '!~'
3
+ ---
4
+
5
+ `!~` 是 `=~` 的否定形式(不近似相等)。
6
+
7
+ ```mira
8
+ 1 !~ 2; // true
9
+ "a" !~ "A"; // false
10
+ ```