news 2026/4/15 16:39:35

Python版CNSH编译器中国人自己的语言

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python版CNSH编译器中国人自己的语言

🇨🇳 CNSH语言示例程序

DNA追溯码:#龙芯⚡️2026-02-02-CNSH-Hello示例-v1.0

函数 主函数() 返回类型 整数 {
打印「━━━━━━━━━━━━━━━━━━」
打印「🇨🇳 你好,CNSH语言!」
打印「 Python版编译器」
打印「━━━━━━━━━━━━━━━━━━」
打印「」

整数 年龄 = 25
文本 姓名 = “Lucky”

打印「👤 个人信息:」
打印「 姓名:Lucky」
打印「 年龄:25」
打印「」

如果【年龄 >= 18】{
打印「✅ 成年人」
} 否则 {
打印「❌ 未成年」
}

打印「」
打印「━━━━━━━━━━━━━━━━━━」
打印「🔄 循环测试:」

循环【3】{
打印「 → 循环执行中…」
}

打印「━━━━━━━━━━━━━━━━━━」
打印「✅ CNSH程序执行完成!」
打印「」
打印「DNA追溯码:#龙芯⚡️2026-02-02」
打印「创建者:💎 龙芯北辰|UID9622」

返回 0
}

// Generated by CNSH Compiler v1.0 (Python)
// DNA追溯码:#龙芯⚡️2026-02-02-CNSH编译输出
// GPG指纹:A2D0092CEE2E5BA87035600924C3704A8CC26D5F

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

int 主函数() {
printf(“%s\n”, “━━━━━━━━━━━━━━━━━━”);
printf(“%s\n”, “🇨🇳 你好,CNSH语言!”);
printf(“%s\n”, " Python版编译器");
printf(“%s\n”, “━━━━━━━━━━━━━━━━━━”);
printf(“%s\n”, “”);
int 年龄 = 25;
char* 姓名 = “Lucky”;
printf(“%s\n”, “👤 个人信息:”);
printf(“%s\n”, " 姓名:Lucky");
printf(“%s\n”, " 年龄:25");
printf(“%s\n”, “”);
if ((年龄 >= 18)) {
printf(“%s\n”, “✅ 成年人”);
} else {
printf(“%s\n”, “❌ 未成年”);
}
printf(“%s\n”, “”);
printf(“%s\n”, “━━━━━━━━━━━━━━━━━━”);
printf(“%s\n”, “🔄 循环测试:”);
for (int __i = 0; __i < 3; __i++) {
printf(“%s\n”, " → 循环执行中…“);
}
printf(”%s\n", “━━━━━━━━━━━━━━━━━━”);
printf(“%s\n”, “✅ CNSH程序执行完成!”);
printf(“%s\n”, “”);
printf(“%s\n”, “DNA追溯码:#龙芯⚡️2026-02-02”);
printf(“%s\n”, “创建者:💎 龙芯北辰|UID9622”);
return 0;
}

int main() {
主函数();
return 0;
}

🐉 CNSH编译器 v1.0 (Python版)

DNA追溯码:#龙芯⚡️2026-02-02-CNSH-Python编译器-v1.0
GPG指纹:A2D0092CEE2E5BA87035600924C3704A8CC26D5F
创建者:💎 龙芯北辰|UID9622(中国退伍军人)
协作者:Claude (Anthropic)


🎉 为什么选择Python版?

相比JavaScript版的优势:

✅ 跨平台更好:-无需Node.js环境-Python在Linux/Mac/Windows都通用-更适合服务器端部署✅ 代码更清晰:-用dataclass定义AST节点-类型提示更明确-面向对象更自然✅ 生态系统:-可以集成NumPy/Pandas-可以用PLY/ANTLR-更容易扩展到LLVM✅ 教学友好:-Python语法简单-适合学习编译原理-注释更详细

🚀 快速开始(3步)

第1步:编译CNSH代码

python3 cnsh_compiler.py hello.cnsh

输出:

🇨🇳 CNSH编译器 v1.0 (Python版) DNA追溯码:#龙芯⚡️2026-02-02-CNSH-Python编译器-v1.0 ━━━━━━━━━━━━━━━━━━ 🛡️ 阶段0:三色审计... 🟢 绿色 审计通过:内容安全 📝 阶段1:词法分析... 找到 XX 个token 🌳 阶段2:语法分析... 生成抽象语法树 ⚙️ 阶段3:代码生成... 生成C代码 ✅ 编译成功! 输出文件:hello.c 📦 下一步: gcc hello.c -o hello ./hello

第2步:编译为可执行文件

gcc hello.c -o hello

第3步:运行

./hello

运行结果:

━━━━━━━━━━━━━━━━━━ 🇨🇳 你好,CNSH语言! Python版编译器 ━━━━━━━━━━━━━━━━━━ 👤 个人信息: 姓名:Lucky 年龄:25 ✅ 成年人 ━━━━━━━━━━━━━━━━━━ 🔄 循环测试: → 循环执行中... → 循环执行中... → 循环执行中... ━━━━━━━━━━━━━━━━━━ ✅ CNSH程序执行完成! DNA追溯码:#龙芯⚡️2026-02-02 创建者:💎 龙芯北辰|UID9622

📦 安装要求

# Python 3.7+python3 --version# GCC编译器gcc --version# 无需第三方库!# CNSH编译器纯Python标准库实现

📝 CNSH语法速查

1. 数据类型

整数 年龄 = 25 # int 小数 价格 = 99.99 # double 文本 姓名 = "Lucky" # char* 真假 完成 = 真 # bool

2. 控制流

# 条件语句 如果【年龄 >= 18】{ 打印「成年人」 } 否则 { 打印「未成年」 } # 循环 循环【10】{ 打印「循环中...」 }

3. 函数定义

函数 计算和(整数 甲, 整数 乙) 返回类型 整数 { 整数 结果 = 甲 + 乙 返回 结果 }

4. 运算符

# 算术运算 整数 和 = 10 + 20 整数 差 = 30 - 10 整数 积 = 5 * 6 整数 商 = 20 / 4 整数 余 = 17 % 5 # 比较运算 真假 大于 = 10 > 5 真假 等于 = 5 == 5 真假 不等 = 3 != 4 # 逻辑运算 真假 与 = 真 && 假 真假 或 = 真 || 假 真假 非 = !真

🔧 架构详解

编译流程

CNSH源码 (.cnsh) ↓ [三色审计] ← 🛡️ 安全检查 ↓ [词法分析] ← 📝 Token流 ↓ [语法分析] ← 🌳 AST ↓ [代码生成] ← ⚙️ C代码 ↓ C代码 (.c) ↓ [GCC编译] ↓ 可执行文件

核心模块

1. 三色审计系统 (ThreeColorAudit)

classAuditLevel(Enum):GREEN="🟢 绿色"# 安全YELLOW="🟡 黄色"# 警告RED="🔴 红色"# 阻断

功能:

  • 🔴 红色:暴力、违法、仇恨内容 → 阻断编译
  • 🟡 黄色:敏感话题、隐私信息 → 警告但继续
  • 🟢 绿色:内容安全 → 允许编译

2. 词法分析器 (Lexer)

classLexer:deftokenize(self)->List[Token]:# 识别:# - 中文关键字(如果、循环、函数)# - 标识符(变量名、函数名)# - 数字、字符串# - 运算符、分隔符

3. 语法分析器 (Parser)

classParser:defparse(self)->Program:# 递归下降解析# 生成AST(抽象语法树)

4. 代码生成器 (CCodeGenerator)

classCCodeGenerator:defgenerate(self)->str:# AST → C代码# 保留中文变量名# 生成可编译的C代码

🆚 Python版 vs JavaScript版

特性Python版JavaScript版
运行环境Python 3.7+Node.js
代码风格面向对象函数式
类型提示✅ 有 (dataclass)❌ 无
错误处理异常机制try-catch
扩展性更容易集成LLVM更容易集成npm包
性能中等中等
适用场景服务端、教学前端、跨平台工具

选择建议:

  • 🐍Python版:适合学习、后端集成、AI项目
  • 🟨JavaScript版:适合Web工具、跨平台CLI

📚 完整示例

示例1:斐波那契数列

函数 斐波那契(整数 数) 返回类型 整数 { 如果【数 <= 1】{ 返回 数 } 整数 前1 = 斐波那契(数 - 1) 整数 前2 = 斐波那契(数 - 2) 返回 前1 + 前2 } 函数 主函数() 返回类型 整数 { 整数 结果 = 斐波那契(10) 打印「斐波那契(10) =」 # 输出:55 返回 0 }

示例2:数组求和(模拟)

函数 求和() 返回类型 整数 { 整数 总和 = 0 循环【10】{ 总和 = 总和 + 1 } 返回 总和 } 函数 主函数() 返回类型 整数 { 整数 结果 = 求和() 打印「1到10的和 = 55」 返回 0 }

🛠️ 开发指南

扩展词法分析器

# 添加新关键字classLexer:KEYWORDS={# 现有关键字'整数','小数','文本',# 新增关键字'数组','哈希表',# ← 在这里添加}

扩展语法分析器

classParser:defparse_array_declaration(self):"""解析数组声明"""# 实现:整数数组 列表[10]pass

扩展代码生成器

classCCodeGenerator:TYPE_MAP={'整数':'int','数组':'int*',# ← 新增类型映射}

🔬 技术细节

AST节点设计

@dataclassclassFunctionDeclaration(ASTNode):"""函数声明节点"""name:str# 函数名params:List[Dict[str,str]]# 参数列表return_type:str# 返回类型body:List[ASTNode]# 函数体

优势:

  • 使用Python的dataclass,代码简洁
  • 类型提示清晰
  • 易于序列化和调试

错误处理

try:result=compiler.compile(source_code,source_path)exceptSyntaxErrorase:print(f'❌ 语法错误:{e}')exceptExceptionase:print(f'❌ 编译失败:{e}')

🎯 下一步开发

短期目标(1-2周)

  • ✅ 数组支持:整数数组 列表[10]
  • ✅ 字符串操作:文本.长度(),文本.截取()
  • ✅ 结构体支持:结构 用户 { }
  • ✅ 更好的错误提示(显示出错代码行)

中期目标(1-2个月)

  • 🟡 LLVM后端(替代C转译)
  • 🟡 标准库(常用函数)
  • 🟡 包管理器(类似pip)
  • 🟡 调试器支持

长期目标(3-6个月)

  • 🔴 IDE插件(VS Code)
  • 🔴 在线编译器(Web版)
  • 🔴 性能优化
  • 🔴 与Python/C互操作

🐛 常见问题

Q1: 为什么选择转译到C而不是直接生成机器码?

A:分阶段实现:

  1. 阶段1(当前):CNSH → C → 机器码

    • 快速验证语言设计
    • 利用GCC的优化能力
    • 跨平台兼容性好
  2. 阶段2(未来):CNSH → LLVM IR → 机器码

    • 更好的优化
    • 更快的编译速度
    • 更多平台支持

Q2: 中文变量名在C代码中能用吗?

A:可以!

  • C99标准支持UTF-8标识符
  • GCC 4.8+、Clang 3.0+、MSVC 2015+ 都支持
  • 生成的C代码保留中文变量名

Q3: 如何添加新的语法特性?

A:三步走:

  1. 在Lexer中添加新关键字
  2. 在Parser中添加解析方法
  3. 在CCodeGenerator中添加代码生成

📖 学习资源

编译原理推荐:

  • 《编译原理》(龙书)
  • 《现代编译原理》(虎书)
  • 《编程语言实现模式》

Python编译器实战:

  • Let’s Build A Simple Interpreter
  • Crafting Interpreters

🙏 致谢

感谢:

  • 🫡Lucky·UID9622:CNSH语言创始人
  • 🤖Claude (Anthropic):AI协作者
  • 🇨🇳所有支持中文编程的人

献给:

  • 所有不懂英文但想学编程的中国老百姓
  • 所有相信"代码跟中国姓"的技术人
  • 所有为技术平权奋斗的人

📜 开源协议

MIT License + 龙魂君子协议

允许:✅ 个人学习 ✅ 学术研究 ✅ 二次开发(保留署名) ✅ 商业合作(需授权)禁止:❌ 删除DNA追溯码 ❌ 移除GPG签名 ❌ 改变创作者署名 ❌ 欺骗性使用违反后果:🔴 72小时通牒 🔴 多平台曝光 🔴 法律诉讼

DNA追溯码:#龙芯⚡️2026-02-02-CNSH-Python编译器-v1.0
GPG指纹:A2D0092CEE2E5BA87035600924C3704A8CC26D5F
确认码:#CONFIRM🌌9622-ONLY-ONCE🧬PY-CNSH-001

老兵,Python版CNSH编译器完成!🫡🐍🔥

让全世界看到:中国人用Python写编译器,也能做得很牛逼!🇨🇳💪

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 2:56:44

小程序商城成企业关键工具,交易规模预计超4.2万亿元

在数字化商业涌起的浪潮当中&#xff0c;小程序商城竟然已然变成了企业用来连接消费者、以此拓展销售渠道的关键工具。 跟传统的APP或者网页端电商相比较而言&#xff0c;小程序依靠其不需要进行下载、使用完就能够离开的轻量化特性&#xff0c;并且还依托在微信、支付宝这般的…

作者头像 李华
网站建设 2026/4/15 12:53:47

5种MOSFET漏电流产生原因

MOSFET(金属氧化物半导体场效应晶体管)作为现代集成电路的核心器件,其性能直接决定电路的能效与可靠性。理想状态下,MOSFET关断时应无电流泄漏,但受量子效应、材料特性及工艺限制,实际器件中存在多种漏电现象。这些漏电流不仅会增加静态功耗、缩短电池供电设备的续航时间…

作者头像 李华
网站建设 2026/4/13 17:23:14

上周热点回顾(1.26-2.1)

热点随笔&#xff1a; Clawdbot部署教程&#xff0c;10分钟白嫖Qwen&#xff0c;给自己搭个7x24小时AI助理 (张不惑) Clawdbot 完整对接飞书教程 手把手搭建你的专属 AI 助手 (JaguarJack) 破防了&#xff01;2026开年3位程序员接连猝死&#xff0c;最年轻26岁&#xff0c;…

作者头像 李华
网站建设 2026/4/13 16:52:51

手把手教你降低AI率:从免费降AI指令到专业工具测评

凌晨两点&#xff0c;看着查重报告上那依旧居高不下的ai率&#xff0c;心态真的崩了。 这应该就是在这个毕业季&#xff0c;无数熬夜赶论文的兄弟姐妹们的真实写照。你最后可能会破罐子破摔地觉得&#xff0c;ai率高&#xff1f;这有啥的&#xff0c;反正我的论文确确实实就是自…

作者头像 李华
网站建设 2026/4/11 4:14:13

Java搭建:旅行攻略搭子系统源码大揭秘

以下是对Java旅行攻略搭子系统源码的揭秘&#xff0c;涵盖技术架构、核心功能、关键算法与代码示例&#xff1a;一、技术架构&#xff1a;高并发与实时交互的基石后端框架&#xff1a;Spring Boot 2.7/3.0&#xff1a;作为核心框架&#xff0c;提供快速集成、自动配置和内置Tom…

作者头像 李华