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