Skip to content
This repository has been archived by the owner on Oct 22, 2024. It is now read-only.
/ y4-lang Public archive

A Programming Language designed to be written in Chinese | 中文编程语言 | 基于 golang 的中文脚本语言,完全使用中文编程 | 仅使用 golang 标准库实现,不使用任何第三方库

License

Notifications You must be signed in to change notification settings

4ra1n/y4-lang

Repository files navigation

Y4-Lang

更新日志 - Change Log

gitleaks badge

Y4-Lang 是一个基于 Golang 的中文编程语言(解释型脚本语言)

不使用任何第三方库,仅依赖 Golang 标准库实现,轻量简单

主要特性:

  • 不使用任何库从零实现词法分析,语法分析,解释执行
  • 类型包含 int/float/bool/stringobject
  • 支持 if/else/while/continue/break 等基本语法
  • 支持数组类型以及 listmap 等高级结构
  • 支持通过 #include 语法导入多个脚本文件执行
  • 支持通过 def 语法定义函数和执行
  • 支持 httpbase64 等常见的库(可扩展)

使用 Y4-Lang 实现快排

函数 交换(数组, 甲, 乙) {
    临时 = 数组[甲];
    数组[甲] = 数组[乙];
    数组[乙] = 临时;
}

函数 分区(数组, 低位, 高位) {
    目标 = 数组[高位];
    甲 = 低位 - 1;
    循环 乙=低位; 乙<高位; 乙=乙+1 {
        如果 数组[乙] < 目标 {
            甲 = 甲 + 1;
            交换(数组, 甲, 乙);
        }
    }
    交换(数组, 甲 + 1, 高位);
    返回 甲 + 1;
}

函数 快排(数组, 低位, 高位) {
    如果 低位 < 高位 {
        目标 = 分区(数组, 低位, 高位);
        快排(数组, 低位, 目标-1);
        快排(数组, 目标+1, 高位);
    }
}

函数 主函数() {
    数组 = [10, 7, 8, 9, 1, 5, 666, 888, 10000, -50];
    数组长 = 长度(数组);
    快排(数组, 0, 数组长-1);
    打印(数组)
}

运行命令:

./y4lang --quiet test.y4

输出:

[-50 1 5 7 8 9 10 666 888 10000]

示例

Docker

提供了 Dockerfile 和脚本,可以自行一键编译

git clone https://github.com/4ra1n/y4-lang
cd y4-lang
chmod u+x docker-build.sh
sudo ./docker-build.sh

实用Y4脚本

以下实用脚本完全由 Y4-Lang 编写

About

A Programming Language designed to be written in Chinese | 中文编程语言 | 基于 golang 的中文脚本语言,完全使用中文编程 | 仅使用 golang 标准库实现,不使用任何第三方库

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Languages