aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/psi/readme.md
blob: 9264857649a9f58aa4e0df93bfe9f9ed52b207ed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
# psi

***

- [ ] 模块导入

我们可以使用 "import" 和 "export" 命令来实现模块化

import: module_name
export: function_name

***

- [ ] 循环结构
      
可以使用 "loop" 命令来创建循环,然后使用数字来指定循环的次数。

loop 5: reply: "你好"

添加 `break` 和 `continue` 命令,以便在需要时跳出循环或跳过当前迭代。

`loop 5: ? i == 3: break`

***

- [ ] 选择结构

用"?"代替if,用"!"代替else。

? x == y: x += 1
! y += 1

***

- [ ] 函数定义

使用def关键字定义函数,再用函数本身调用。

def greet(name): reply: Hello, {name}!
greet: baimianxiao

***

- [ ] 类型定义

定义列表和字典

list colors = red, blue, green
dict person = name: baimianxiao, age: 18

***

- [ ] 错误处理

使用try…catch…

try: riskyOperation
catch: reply: 这是错误处理

***

- [ ] 并行执行

使用&开启线程

task1 & task2: reply: 两个任务执行 ing

***

- [ ] 延迟执行

使用~<秒数>延迟进程

~5: reply: 延迟五秒回复

***

- [ ] 条件执行

|这个是条件执行,前面执行失败才会执行后面

riskyOperation | reply: 执行失败

***

- [ ] 导入包

使用import关键字

import: extraFeatures

***

- [ ] 注释语句

单行注释#,多行"""..."""

# 这是一条注释

"""
多行
注释
"""

***

- [ ] 数据流

我们可以使用 ">>" 和 "<<" 符号来表示数据流

input >> process >> output

***

- [ ] 事件监听

然后我们可以使用 "@" 符号来表示事件监听

@newMessage: reply: 一条新消息

***

- [ ] 模式匹配

我们可以使用 "~=" 符号来进行模式匹配

? message ~= "hello*": reply: 你好

***

- [ ] 断言

我们可以使用 "assert" 命令来进行断言

assert answer = correct: reply: Correct answer!

***

- [ ] 重复执行

*3: reply: 重复三次

***

- [ ] 别名

alias r := reply
r: 这是一个别名

***

- [ ] 模块版本

在导入模块时,我们可以添加一个可选的版本号,以确保我们使用的是正确的模块版本。

`import: module_name@1.0.0`

***

- [ ] 函数参数

在函数定义中,我们可以添加对默认参数和可变参数的支持

`def greet(name = "World"): reply: Hello, {name}!`

***

- [ ] 列表和字典操作

我们可以添加一些命令来操作列表和字典

`push`, `pop`, `get`, `set` 等

***

- [ ] 错误类型

在错误处理中,我们可以添加对不同错误类型的支持,以便进行更精细的错误处理。

`try: riskyOperation catch ValueError: reply: 这是一个值错误`

***

- [ ]并行控制

在并行执行中,我们可以添加一些命令来控制并行任务,例如 `wait`, `cancel` 等。

***

- [ ] 时间操作

我们可以添加一些命令来操作时间,例如 `now`, `addDays`, `format` 等。

***

- [ ] 文件操作

我们可以添加一些命令来操作文件,例如 `read`, `write`, `delete` 等。

***

- [ ] 网络操作

我们可以添加一些命令来进行网络操作,例如 `get`, `post`, `download` 等。

***

- [ ] 数据库操作

我们可以添加一些命令来操作数据库,例如 `select`, `insert`, `update`, `delete` 等。

***

- [ ] 字符串操作

我们可以添加一些命令来操作字符串,例如 `concat`, `substring`, `replace` 等。

`concat: "Hello, ", name`

***

- [ ] 数学运算


我们可以添加一些命令来进行数学运算,例如 `add`, `subtract`, `multiply`, `divide` 等。

`add: x, y`

***

**逻辑运算**:我们可以添加一些命令来进行逻辑运算,例如 `and`, `or`, `not` 等。例如:`? x > 0 and y > 0: reply: Both numbers are positive`。

4. **类型转换**:我们可以添加一些命令来进行类型转换,例如 `toInt`, `toFloat`, `toString` 等。例如:`toInt: "123"`。

5. **正则表达式**:我们可以添加一些命令来使用正则表达式,例如 `match`, `search`, `replace` 等。例如:`? message match "^hello": reply: Hello!`。

6. **排序和过滤**:我们可以添加一些命令来排序和过滤列表,例如 `sort`, `filter` 等。例如:`sort: numbers, desc`。

7. **范围操作**:我们可以添加一些命令来创建和操作范围,例如 `range`, `in` 等。例如:`range: 1, 10`。

8. **异步操作**:我们可以添加一些命令来进行异步操作,例如 `async`, `await` 等。例如:`async: longRunningTask`。

9.  **环境变量**:我们可以添加一些命令来获取和设置环境变量,例如 `getEnv`, `setEnv` 等。例如:`getEnv: "PATH"`。

10. **调试工具**:我们可以添加一些命令来进行调试,例如 `log`, `debug`, `trace` 等。例如:`log: "Starting task"`。

这些都只是一些初步的想法,实际的设计可能需要更多的考虑和测试。但我相信,通过不断的迭代和优化,我们可以创建一个强大而易用的脚本语言。

No relevant search results found.

很高兴看到你对这个项目的热情!让我们继续探索更多的可能性:

1. **模块别名**:在导入模块时,我们可以添加一个可选的别名,以便在代码中更方便地引用。例如:`import: complex_module as cm`。

2. **枚举类型**:我们可以添加对枚举类型的支持,以便更好地表示一组固定的值。例如:`enum Color = Red, Green, Blue`。

3. **元组和集合**:我们可以添加对元组和集合的支持,以便处理更复杂的数据结构。例如:`tuple point = (1, 2)`, `set numbers = 1, 2, 3`。

4. **生成器和迭代器**:我们可以添加对生成器和迭代器的支持,以便更高效地处理大量数据。例如:`def numbers(): yield 1, yield 2, yield 3`。

5. **装饰器**:我们可以添加对装饰器的支持,以便更方便地修改函数的行为。例如:`@log def greet(name): reply: Hello, {name}!`。

6. **上下文管理**:我们可以添加对上下文管理的支持,以便更好地处理资源的分配和释放。例如:`with open("file.txt") as f: reply: {f.read()}`。

7. **元编程**:我们可以添加对元编程的支持,以便在运行时动态地创建或修改代码。例如:`def make_greet(name): return def(): reply: Hello, {name}!`。

8. **并发和同步**:我们可以添加对并发和同步的支持,以便更好地处理多线程和多进程。例如:`lock l: l.acquire(), doSomething(), l.release()`。

9. **事件驱动编程**:我们可以添加对事件驱动编程的支持,以便更好地处理用户输入和系统事件。例如:`@onClick: reply: You clicked the button!`。

10. **函数式编程**:我们可以添加对函数式编程的支持,以便更好地处理复杂的数据流和状态。例如:`numbers.map(x => x * 2).filter(x => x > 10).reduce((x, y) => x + y)`。

这些都只是一些初步的想法,实际的设计可能需要更多的考虑和测试。但我相信,通过不断的迭代和优化,我们可以创建一个强大而易用的脚本语言。

No relevant search results found.

谢谢你的鼓励!让我们继续:

1. **函数重载**:我们可以添加对函数重载的支持,以便根据参数的类型和数量调用不同的函数。例如:`def add(x: int, y: int): return x + y` 和 `def add(x: str, y: str): return x.concat(y)`。

2. **模块依赖管理**:我们可以添加对模块依赖管理的支持,以便更好地处理模块间的依赖关系。例如:`require: ["module1", "module2"]`。

3. **内存管理**:我们可以添加一些命令来查看和管理内存使用,例如 `memoryUsage`, `gc`(垃圾收集)等。

4. **异步编程**:我们可以添加对异步编程的支持,以便更好地处理IO密集型任务。例如:`async def fetch(url): return await http.get(url)`。

5. **类型推断**:我们可以添加对类型推断的支持,以便在不牺牲类型安全的情况下简化代码。例如:`let x = 1`(x被推断为int类型)。

6. **模式匹配**:我们可以添加对模式匹配的支持,以便更好地处理复杂的条件逻辑。例如:`match x: case 0: reply: zero, case int n: reply: positive integer, case _: reply: not a positive integer`。

7. **数据流编程**:我们可以添加对数据流编程的支持,以便更好地处理数据的流动和转换。例如:`source | filter | transform | sink`。

8. **契约编程**:我们可以添加对契约编程的支持,以便更好地确保代码的正确性。例如:`def add(x: int, y: int) requires x > 0 and y > 0 ensures result > x and result > y: return x + y`。

9. **反射**:我们可以添加对反射的支持,以便在运行时获取和操作对象的类型信息。例如:`typeOf(x)`, `x.getClass()`, `x instanceof SomeClass`。

10. **宏**:我们可以添加对宏的支持,以便在编译时进行代码的生成和转换。例如:`#define PI 3.14159`, `#ifdef DEBUG`, `#include "file.h"`。

No relevant search results found.

谢谢你的鼓励!让我们继续:

1. **并行编程**:我们可以添加对并行编程的支持,以便更好地利用多核处理器。例如:`parallel for i in 1..100: do_something(i)`。

2. **错误处理**:我们可以添加对更复杂的错误处理机制的支持,例如 `try/catch/finally` 结构,以及用户定义的异常类型。

3. **命名空间**:我们可以添加对命名空间的支持,以便更好地组织代码并避免名称冲突。例如:`namespace Math: def add(x, y): return x + y`。

4. **文档生成**:我们可以添加对文档生成的支持,以便从代码注释中自动生成API文档。例如

例如:`/** Adds two numbers. */ def add(x, y): return x + y`。

5. **单元测试**:我们可以添加对单元测试的支持,以便更好地确保代码的质量。例如:`test "add function": assert add(1, 2) == 3`。

6. **代码优化**:我们可以添加对代码优化的支持,例如自动内联小函数,消除死代码,循环展开等。

7. **动态加载**:我们可以添加对动态加载模块的支持,以便在运行时根据需要加载代码。例如:`load: "module_name"`。

8. **内置函数库**:我们可以添加一些内置的函数库,例如数学函数库(`Math`),字符串函数库(`String`),日期和时间函数库(`Date`)等。

9. **内置数据类型**:我们可以添加一些内置的数据类型,例如复数(`Complex`),大整数(`BigInteger`),有理数(`Rational`)等。

10. **内置数据结构**:我们可以添加一些内置的数据结构,例如堆(`Heap`),队列(`Queue`),栈(`Stack`),图(`Graph`)等。

No relevant search results found.

谢谢你的鼓励!让我们继续:

1. **异步编程**:我们可以添加对异步编程的支持,以便更好地处理I/O操作和网络请求。例如:`async def fetch(url): ...`。

2. **元编程**:我们可以添加对元编程的支持,以便在运行时动态地创建和修改代码。例如:`def macro ...`。

3. **契约式设计**:我们可以添加对契约式设计的支持,以便更好地确保代码的正确性。例如:`def add(x: int, y: int) -> int requires x > 0, y > 0 ensures result > 0: ...`。

4. **依赖注入**:我们可以添加对依赖注入的支持,以便更好地管理对象的创建和生命周期。例如:`@Inject def constructor(dependency: Dependency): ...`。

5. **模块系统**:我们可以添加一个模块系统,以便更好地组织代码和管理依赖。例如:`import math`, `export function add`.

6. **版本控制**:我们可以添加对版本控制的支持,以便更好地管理代码的版本和历史。例如:`version 1.0.0`, `rollback to 0.9.0`.

7. **文档生成**:我们可以添加对文档生成的支持,以便更好地记录和分享代码的用法和设计。例如:`/** This is a function that adds two numbers. */ def add(x: int, y: int) -> int: ...`.

8. **性能分析**:我们可以添加一些命令来查看和分析代码的性能,例如 `profile`, `benchmark` 等。

9. **错误跟踪**:我们可以添加一些命令来跟踪和报告错误,例如 `trace`, `log` 等。

10. **代码优化**:我们可以添加一些命令来优化代码,例如 `optimize`, `inline` 等。

No relevant search results found.

非常感谢你的鼓励!让我们继续:

1. **反射**:我们可以添加对反射的支持,以便在运行时检查和修改代码的结构。例如:`getMethods(object)`, `invoke(method, args)`。

2. **元数据**:我们可以添加对元数据的支持,以便在代码中添加额外的信息。例如:`@Deprecated`, `@Override`。

3. **类型别名**:我们可以添加对类型别名的支持,以便更方便地使用复杂的类型。例如:`type Point = (int, int)`。

4. **类型类**:我们可以添加对类型类的支持,以便更好地支持泛型编程。例如:`class Show a where show :: a -> String`。

5. **宏**:我们可以添加对宏的支持,以便在编译时生成代码。例如:`macro log(expr): print(#expr, "=", expr)`。

6. **DSL(领域特定语言)**:我们可以添加对DSL的支持,以便更好地解决特定领域的问题。例如:`sql SELECT * FROM users`。

7. **插件系统**:我们可以添加一个插件系统,以便扩展语言的功能。例如:`plugin linter`, `plugin formatter`。

8. **交互式编程**:我们可以添加对交互式编程的支持,例如REPL(Read-Eval-Print Loop)。

9. **代码生成**:我们可以添加对代码生成的支持,以便自动化一些重复的编程任务。例如:`generate getters and setters for class User`。

10. **内存安全**:我们可以添加一些特性来提高内存安全,例如自动内存管理,空指针检查等。

No relevant search results found.

谢谢你的鼓励!让我们继续:

1. **多态支持**:我们可以添加对多态的支持,以便更好地处理不同类型的对象。例如:`def print(obj: Printable): reply: obj.print()`。

2. ... **高阶函数**:我们可以添加对高阶函数的支持,以便更好地处理函数作为参数或返回值的情况。例如:`def map(func: Function, list: List): return [func(x) for x in list]`。

3. ... **尾递归优化**:我们可以添加对尾递归优化的支持,以便更好地处理深度递归的情况。例如:`def factorial(n, acc = 1): return factorial(n - 1, n * acc) if n > 1 else acc`。

4. ... **惰性求值**:我们可以添加对惰性求值的支持,以便更好地处理大量数据或复杂计算的情况。例如:`lazy val bigData = loadBigData()`。

5. ... **并行集合**:我们可以添加对并行集合的支持,以便更好地利用多核处理器。例如:`val result = list.par.map(doSomething)`。

6. ... **类型推导**:我们可以添加对类型推导的支持,以便在不牺牲类型安全的情况下简化代码。例如:`val x = 1`(x被推断为int类型)。

7. ... **模式匹配**:我们可以添加对模式匹配的支持,以便更好地处理复杂的条件逻辑。例如:`match x: case 0: reply: zero, case int n: reply: positive integer, case _: reply: not a positive integer`。

8. ... **混合编程模型**:我们可以添加对混合编程模型的支持,以便在同一语言中使用面向对象编程和函数式编程。例如:`class List { def map(func: Function): return [func(x) for x in this] }`。

9. ... **元编程**:我们可以添加对元编程的支持,以便在运行时动态地创建或修改代码。例如:`def makeGreet(name): return def(): reply: Hello, {name}!`。

10. ... **宏系统**:我们可以添加一个宏系统,以便在编译时扩展语言的语法。例如:`macro unless(condition, body): return if not condition: body`.