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
|
Psi CLI 语言
========================
Psi 是一门新的编程语言,在设计时考虑了简单性、灵活性和性能。它提供了一种简洁直观的语法,易于读写,使其成为初学者和经验丰富的程序员的绝佳选择。
特征
--------
- `词法分析器模块`_: 词法分析器模块负责将源代码转换为一系列标记。它识别语言的基本元素,例如标识符、关键字、运算符和文字。
- `程序解析器模块`_: 程序分析器模块采用词法分析器模块生成的标记序列,并将其转换为抽象语法树(Abstract Syntax Tree,后译 AST)。AST 是一种树状数据结构,它以更接近编程语言语法结构的方式表示源代码。``['OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'SEPARATOR', 'CONTROL', 'IDENTIFIER', 'OPERATOR', 'INTEGER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'EOF']``
- `内置类型模块`_: 该模块定义了 Psi 语言的内置类型,例如列表和字典。它提供了用于创建和操作这些类型的实例的函数。
- `错误处理模块`_: 此模块提供在运行程序时捕获和处理错误的机制。它定义了一组异常类和函数,用于抛出和捕获这些异常。
- `执行环境模块`_: 该模块定义了 Psi 语言的执行环境,包括变量的范围和生命周期。它提供了用于在执行环境中定义和查找变量的函数。
- `解释器模块`_: 该模块的主要作用是遍历 AST 并在执行环境中执行相应的操作。
- `数学基础模块`_: 该模块提供基本的数学函数和常数,如加法、减法、乘法和除法。
- `文档模块`_: 该模块使用 reStructuredText 和 Sphinx 构建文档,提供 API 接口描述和使用示例。
.. _`词法分析器模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/lexer.py
.. _`程序解析器模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/parser.py
.. _`内置类型模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/type.py
.. _`错误处理模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/exception.py
.. _`执行环境模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/execution.py
.. _`解释器模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/interpreter.py
.. _`数学基础模块`: https://github.com/HydroRoll-Team/psi/blob/main/psi/mathematics.py
.. _`文档模块`: https://github.com/HydroRoll-Team/psi/blob/main/docs
开始
---------------
如何使用 Psi ?你可以克隆存储库并按照自述文件中的说明进行操作。该存储库包括一组完整的示例,用于演示该语言的各种功能。
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| *数据结构* | *数据类型* | *关键字* | *特殊字符* |
+=====================+=====================+=========================================+=============================================+
| List | Integer | ``reply`` ``ask`` | ``?``: if, ``!``: else, ``|``: condition |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Dictionary | Float | ``import`` ``export`` | ``==`` ``<`` ``>`` ``!=`` ``~=`` ``=`` |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Set | Boolean | ``def`` ``call`` | ``&``: parallel, ``~``: delay |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Tuple | String | ``list`` ``dict`` ``set`` ``tuple`` | ``#`` ``""""...""""`` |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Array | Null | ``try`` ``catch`` ``assert`` | ``>>``: output stream, ``<<``: input stream |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Queue | Object | ``alias`` | ``@``: hook events |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Stack | Function | ``wait`` ``async`` ``cancel`` ``yield`` | ``*``: repeat |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Graph | Class | ``match`` ``search`` ``replace`` | ``&&``: and, ``||``: or, ``!``: not |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| Tree | Interface | ``namespace`` | ``{}``: code block, refer |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
| LinkedList | Enum | ``loop`` ``break`` ``continue`` | ``=>``: functional program |
+---------------------+---------------------+-----------------------------------------+---------------------------------------------+
贡献
------------
欢迎对 Psi 项目做出贡献。如果你有功能请求、错误报告或改进建议,请在项目的 GitHub 页面上提出。如果你希望贡献代码,请分叉存储库并提交拉取请求。
如何构建文档
^^^^^^^^^^^^^^^^^
::
git clone https://github.com/HydroRoll-Team/psi.git
cd psi/psi/docs
sphinx-build -b html . _build/html
许可证
-------
Psi是一款开源软件,根据 MIT 许可证获得许可,这意味着你可以根据本许可的条款自由使用、修改和分发它。
|