Metadata-Version: 2.4
Name: jikuai
Version: 0.4.1
Summary: 极快 - 适合中国国情的中文编程语言
Author: skywalk163
License-Expression: MIT
Keywords: chinese,programming-language,中文编程
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"

# 极快 JiKuai

> 极简·极速·极中国

一门为中国开发者量身定制的中文编程语言。

## 设计理念

1. **极简语法** — 双字关键词，无空格分词，句号结语句
2. **极速上手** — 百家姓变量名，中文数字字面量，自然语序
3. **极中国** — 内置人民币运算、农历日期、中文正则、成语断言

## 语言特色

### 管道式数据流（逗号管道）
```
列1 2 3 4 5，皆乘2，只大6，归加0。
```
结果：`30`

逐段解释（每段的结果自动成为下一段的第一参数）：
1. `列1 2 3 4 5` → `[1, 2, 3, 4, 5]`
2. `皆乘2`（map）→ `[2, 4, 6, 8, 10]`
3. `只大6`（filter）→ 注意 `大` **不是**内建动词（内建比较动词是 `大于`），
   副词内部遇到未知动词时按原值透传，本段**不产生过滤效果** → `[2, 4, 6, 8, 10]`
4. `归加0`（reduce，初值 0）→ `0+2+4+6+8+10` = `30`

> 若想真正过滤「大于 6」，应写 `只大于6`：`列1 2 3 4 5，皆乘2，只大于6，归加0。` → `18`。

### 元数驱动解析
动词声明参数个数，免括号调用：
```
加 3 5。        -- 结果 8
打印 "你好"。   -- 输出：你好
```

### 无空格书写
```
定义张三=100。
如果张三大于60那么：
  打印"及格"。
否则：
  打印"不及格"。
```

### 百家姓标识符
变量名以百家姓开头，天然与关键字/动词区分：
```
定义赵甲=10。
定义李乙="程序员"。
打印赵甲加5。
```

### 中国特色内置

#### 人民币类型
```
定义王价格=￥99.90。
定义赵总价=王价格乘3。
打印赵总价。          -- ￥299.70
```

#### 农历日期
```
定义李今天=农历今日。
打印李今天。          -- 二〇二六年闰六月廿三
```

#### 中文数字
```
定义周数=三百六十五。
打印周数加1。         -- 366
```

### 面向对象
```
类 动物：
  构造 接收 姓名 年龄：
    自身.姓名=姓名。
    自身.年龄=年龄。
  。
  方法 叫声：
    返回 "..."。
  。
。

类 狗 继承 动物：
  方法 叫声：
    返回 "汪汪"。
  。
。

定义赵狗=新建狗("旺财", 3)。
打印赵狗.叫声。     -- 汪汪
```

### 异常处理
```
尝试：
  定义李结果=除10 0。
捕获 错误：
  打印"出错了：" 错误。
最终：
  打印"清理完毕"。
。
```

### 模块系统
```
导入 数学。
从 文件 导入 读取。
```

### Python 互操作（v0.4.0）

极快 → Python：
```
导入 蟒:math。
打印 math.sqrt(16)。    -- 输出 4.0
导入 蟒:json。
打印 json.dumps(列 1 2 3)。  -- 输出 [1, 2, 3]
```

Python → 极快：
```python
import jikuai

mod = jikuai.load("script.jk")
print(mod.某函数(3))     # 调用极快函数
print(mod.某变量)        # 读取极快变量
obj = mod.某类(参数)     # 实例化极快类
```

## 文件扩展名

`.jk`

## 示例与场景

`examples/` 下按主题组织了可直接运行的示例（全部 `退出码 0`）：

### 管道范式（`examples/pipelines/`）
| 文件 | 教学目标 |
|------|----------|
| `01_多级过滤映射聚合.jk` | 过滤→映射→聚合的多级逗号管道 |
| `02_条件分支管道.jk` | 管道结果结合 如果/否则 条件分支 |
| `03_字典结构化数据.jk` | 字典键值访问、`皆取值"键"` 字段投影 |
| `04_异常在管道中传播.jk` | 尝试/捕获/最终 拦截管道中的异常 |
| `05_副词组合.jk` | 皆/只/归 三副词的单用与组合 |
| `06_中国特色管道.jk` | 人民币金额、农历/干支/生肖进管道 |

### 场景脚本（`examples/scenarios/`）
| 文件 | 场景 |
|------|------|
| `财务计算.jk` | 报销单：`￥` 字面量、税费、大写金额、汇总 |
| `农历工具.jk` | 公历→农历、干支纪年、生肖、甲子循环 |
| `管道数据清洗.jk` | 脏数据 → 多级管道（≥3 段）→ 干净结果 |

运行示例：
```bash
jk examples/pipelines/01_多级过滤映射聚合.jk
jk examples/scenarios/财务计算.jk
jk examples/scenarios/管道数据清洗.jk
```

## 语法备注

### 全半角标点等价

极快语言对以下标点支持全角/半角双写，二者语义完全等价：

| 全角 | 半角 | 语义 |
|------|------|------|
| `（` | `(` | 左括号 |
| `）` | `)` | 右括号 |
| `【` | `[` | 左方括号 |
| `】` | `]` | 右方括号 |
| `：` | `:` | 冒号（块起始） |
| `，` | `,` | 逗号（管道 / 分隔符） |
| `、` | `,` | 顿号（同逗号） |

> **变更留痕**：ASCII 半角逗号 `,` 作为管道与参数分隔符的支持在 v0.3.0-beta 实现期追认，
> 与已有的全半角括号 `(` / `（` 双写策略同源。追认为「实现期追认的语义扩展」。


## 安装与使用

```bash
cd G:\jikuai
pip install -e .
jk examples/hello.jk
jk              # 进入 REPL
```

### 三种等价入口

以下三种方式完全一致，均归一到 `jikuai.main:main`：

```bash
jk examples/hello.jk           # pip install -e . 后可用
python -m jikuai examples/hello.jk   # 无需安装，只要 PYTHONPATH 含 src/
python -m jikuai.main examples/hello.jk
```

无参数时均进入交互式 REPL；`-h` 显示帮助；`-v` 显示版本。

## 项目结构

```
jikuai/
├── src/jikuai/
│   ├── __init__.py
│   ├── main.py          # CLI 与 REPL
│   ├── keywords.py      # 关键字/动词/百家姓定义
│   ├── tokens.py        # Token 类型
│   ├── lexer.py         # 无空格分词器
│   ├── ast_nodes.py     # AST 节点
│   ├── parser.py        # 元数驱动解析器
│   ├── evaluator.py     # 求值器/解释器
│   └── builtins.py      # 内建函数与中国特色库
├── stdlib/              # 标准库（.jk 文件）
├── examples/            # 示例程序
│   ├── pipelines/       # 管道范式示例（6 个）
│   └── scenarios/       # 场景化脚本（3 个）
├── tests/               # 测试
└── docs/                # 文档
```
