这个项目基于几个在用 Go 的时候遇到的问题:
try,只要 catch 语句的错误处理语法理想的目标成为 Go 语言的一个第三方编译器,当然要完全兼容实现 Go 的所有功能,难度是相当大的。 不过,离理想比较远的话,由于 Go 的简洁语法还是挺好的,会成为基于 Go 语言语法的一种方言吧,还可以做一些新语法实验。
|
guonaihongFeb 27, 2020
1
建议,加些文档。example 最好在 readme 里面有连接可以点进去。
|
|
2
不是很懂为什么认为把 go 的功能用 c 再编译一遍能比 go 高效,难道认为 go 是脚本语言吗?这样下去的结果不是又实现了一个 go?
|
|
CismonXFeb 27, 2020
3
很赞。最近我也在学习编译原理,希望这个项目能对我有所帮助
|
|
FrankHBFeb 27, 2020
4
不需要 try 只需要 catch 是打算长什么样的?就是隐含了 expand 到 block,顺带不让用户选择要 catch 的范围?
|
|
janxinFeb 27, 2020
5
LLVMGo 直接编译也可以吧?
|
|
6
@FrankHB
`catch` 语法这个样子的,catch 范围是整个函数级的,不太喜欢 try {} 块,改变了代码的层级结构: https://github.com/kitech/cygo/blob/0f213381f06116d0f6f2ca6bf2ccbe70ab088882/bysrc/tpkgs/catch2/t.go#L18 |
|
FrankHBFeb 27, 2020
8
看来和我理解的差不多。
按我的口味,我不喜欢 try ... catch ... 这种要求语法上是内嵌“代码块”。技术意义上,这种 try 和 catch 必须是“语法”,其中 ... 不能一等对象,因此整个基本上不得不用宏实现(如 https://gist.github.com/sebfisch/2235780 )而不能拆分成函数。 不过都打算直接内建在语言里写死了,这倒是无所谓了。 |
|
ai277014717Feb 27, 2020
9
包大小是个问题不过用 gzexe upx 啥的大概能减少一半大小
|
|
dick20cmFeb 27, 2020
10
v 站的老哥个个都是人才,楼主水平估计可以一个人吊打沸腾厂方舟编译器
|
|
janxinFeb 27, 2020
11
@yatseni llvmgo 确实力量不足,算是个人项目。tinygo 之类的和 llvmgo 还不一样,他们没有全兼容 Go 功能的预期,主要是把语言使用场景做了拓展,无论语言本身功能和标准库支持都不在一个水平上
|
|
secondwtqFeb 27, 2020
12
粗略翻了一下 commit history,发现已经做了一年多了 ...
问下 history 里面的 drswinghead,kitech,egitop,pwaller 这几个 ID 背后有几个人? |
|
dexterFeb 28, 2020
15
已点赞
|
|
16
@ChristopherWu 我看可以,不妨说说
|