Skip to content

编译器原理和实现

用Rust实现Lua解释器

前言 - 用Rust实现Lua解释器 (wubingzheng.github.io)

电子书《自己动手写编译器》

在线书籍:https://pandolia.net/tinyc/

开源地址:https://github.com/pandolia/tinyc

本书( https://pandolia.net/tinyc/ )将介绍一个非常简单的编译器( TinyC 编译器)的实现,用简单和易于实现的实例来描述基本的编译原理及过程。

所有源码都在 github ( https://github.com/pandolia/tinyc )上,读者可以一步一步、从简单到复杂,实现一个完整的编译器。

洛书编程语言

洛书编程语言: 一款超轻量、高性能、跨平台的嵌入式脚本语言,可以运行在Windows、Linux、MCU上。致力于打造一款开源、高效、强大的编程语言 (gitee.com)

一个开源、跨平台、易拓展、多用途中文编程语言。

源码完全符和C++11标准,不依赖第三方运行时,不存在套壳python等现象。

可以动态地调用C/C++/Python等编写的接口函数,拓展更多功能。

可以用于嵌入式、物联网等开发场景,降低构建难度。

作者抖音帐号 22774526081,里面有一些demo的运行视频,比如 扫码控制的红外感应报警器

Wa 编程语言

GitHub:wa-lang/wa:Wa 编程语言:用于开发 WebAssembly 软件的简单、可维护、编译的语言 (github.com)

Gitee:凹语言: 🇨🇳 凹语言 - 国内首个实现纯浏览器内编译、执行全链路的自研静态类型的编译型通用编程语言。为 WebAssembly 而生的通用编程语言。 (gitee.com)

官网:凹语言 | 为WebAssembly而生 (wa-lang.org)

HVML/PurC

C 语言的主要 HVML 解释器:HVML/PurC: The prime HVML interpreter for C Language. (github.com)

基于rust实现三体编程语言

rustq/3body-lang: 三体编程语言 Three Body Language written in Rust (github.com)

基于C语言实现的自然编程语言

nature-lang/nature:🍀自然编程语言,愿你能够体验到编程的乐趣。 (github.com)

基于JavaScript实现的编程语言

getify/foi-lang:Foi:一种不同的函数式编程语言 (github.com)

从零实现一门编程语言

想必有过编程经历的人,第一行代码都是''hello world'',它几乎已经成了编程界不成规矩的规矩了。

第一个程序

为什么第一个程序总是“hello world”呢?

这个就要追溯到编程诞生的时期了,1972年,贝尔实验室著名研究员Brian Kernighan在撰写“B语言教程与指导”时初次使用(程序),这是目前已知最早的在计算机著作中将hello和world一起使用的记录。

在1978年,他在他和Dennis Ritchie合作撰写的C语言圣经“The C Programming Language”中,延用了“hello,world”句式,作为开篇第一个程序,从此用hello world向世界打招呼成为惯例。

自定义语言

随着近代编程语言的不断发展,编程语言的功能越来越强,种类也越来越多。我相信很多人会写不少语言的“hello world”,但你会用自己的编程语言写出专属的“hello world”吗?

去年闲暇之余,做了一个自定义语言的专栏,主要讲述了一门语言的诞生过程,手把手教你如何设计和编写一个具有个人特色的编译器,感兴趣的朋友可以一起来动手玩玩。文末会有源码的地址。

图片

本专栏主要包括以下章节,由浅入深,采用循序渐进式的学习路径。通过本专栏,你可以定制一门编程语言,并加入属于个人风格的编程方式。或者你只是单纯想了解一下编程语言的实现过程,那么在此过程中,你会学习到很多日常编码中了解不到的知识。

比如什么是文法、词法、汇编指令、进程内存结构、函数栈的调用过程、指针的底层实现、内存的分配过程、结构体和线程到底是如何实现的等等。

本专栏会通过一个个小章节来讲述,轻松且风趣,愉悦不伤脑。

核心章节

自更多拓展

后续会拓展更多的高级功能,比如:

  1. 一个线程的实现
  2. 文件读取
  3. 编译优化算法

4.什么是锁

5.网络编程

6.面向对象

7.其他规划

如果你也感兴趣,不妨尝试一起来实现剩下的功能,下面是Git地址,欢迎star

**Git:**https://gitee.com/emphse/quest.git

Released under the MIT License.