aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/readme_cn.rst
blob: 2e2bdaad22437d688842a3302377daedbce20b2d (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
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 许可证获得许可,这意味着你可以根据本许可的条款自由使用、修改和分发它。