开源一个静态类型语言——NLang

多年以前写游戏引擎的时候,我在里面做过一门脚本语言。最近把它从引擎里拆出来,整理成一个独立项目,放到了GitHub上:https://github.com/dliting/nlang

NLang 是一个完整的语言项目,由四个部分组成:

  • 语言:静态类型,语法风格接近 C# 和 Java
  • 编译器(ncc):完整的编译器前端,把源码编译成自定义字节码
  • 虚拟机(nvm):执行字节码的运行时,另带一个字节码反汇编器(ndisasm)
  • IDE(nide):基于 Qt5 的桌面开发环境,内置一份离线文档站,跟着入门章节就能上手

语言本身该有的都有。Java 或 Python 里的核心特性,它基本都覆盖:类与继承、接口、枚举、泛型容器(List、Dict)、异常处理(try/catch/finally)、函数引用(Func)、foreach、switch、字符串插值。标准库目前有 io、math、fs 三个命名空间和一组字符串方法。

一段示例,把列表里的数加起来:

nlang 复制代码
import io;

int main() {
    List<int> xs = [3, 1, 4, 1, 5];

    int total = 0;
    foreach (int x in xs) {
        total += x;
    }
    io.print(total);              // 14
    return 0;
}

实现以前是C++11, 现在升级到了 C++17:词法和语法分析基于 Flex/Bison,语义分析、代码生成和虚拟机手写的,通过AI工具整理了项目。今天发了 v0.1.0:Windows 安装包和免安装 zip 都挂在 GitHub Releases 上。

开源主要动机是教学和研究用途,可以用于研究各种语言特性的实现机制,也当作个人项目的一份存档。MIT 协议,感兴趣的朋友可以看看:

后续 roadmap 上还有 lambda/闭包、用户自定义泛型、LSP、Linux 移植。不着急,慢慢来。

相关推荐
汉克老师3 小时前
GESP2026年9月认证C++六级( 第三部分编程题(1、数组划分))精讲
c++·gesp·小学生·学c++编程
千里码aicood3 小时前
基于PLC与机器视觉的智能分拣控制系统设计
c++·自动化·plc
漂流瓶jz3 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
朽棘不雕3 小时前
进一步了解模板
c++
汉克老师6 小时前
CSP-J 2026 初赛试题解析(第一部分:选择题(8-15))精讲
c++·csp-j·小学生·学c++编程
wabs6667 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
程序员Better8 小时前
我终于遇到一台懂 AI 编程的专业编程显示器!
人工智能·openai·编译器
风合星语8 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
91刘仁德9 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
库玛西9 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研