https://github.com/Cofyc/cobj名字叫 cobj, C Object 的缩写。
一两年前,一本编译原理,一堆 checkout 出来的源码,从零开始,纯粹只是为了实现”自己的”语言,开始了这个业余项目。
虽然是还是一个 toy language,但如今有了点雏形,感觉迈出了第一步,鼓起勇气放到网上,希望与更多语言爱好者交流。。。
很多代码与技术是基于或者借自其他开源语言,其中核心的对象模型与 GC 是 Python 的翻版,但词法、语法分析器,语法树,VM,以及一些辅助设施均自己实现,当然技术均来自书籍以及各种开源语言,包括并不限于以下:Python, PHP, Ruby, Lua, Go。这方面目前不敢说有任何独到之处。
以下是例子:(目前很雏形,对象,模块,第三方 API 均还没有)
// print primes
maxnum = 10
i = 2
func is_prime(n)
----local j = 2
----while j * j < n + 1
--------if n % j == 0
------------return False
--------end
--------j += 1
----end
----return True
end
while i <= maxnum
----if is_prime(i)
--------print(i)
----end
----i += 1
end
// closure
# Borrowed from Programming Lua, 2nd edition, section 16.5
func newObject(value)
----return func (action, v)
--------if action == "get" do return value
--------elif action == "set" do value = v
--------end
----end
end
d = newObject(0)
print(d("get", None))
d("set", 10)
print(d("get", None))
更多例子可以看代码的 examples/ 目录。希望与更多同好交流。。。并希望自己的代码对想要写语言的人有所帮助。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/46455
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.