文件名称:knox:用Go编写的一种实验性编程语言,可编译为C语言
文件大小:29KB
文件格式:ZIP
更新时间:2024-02-21 07:54:21
programming-language compiler CompilerGo
诺克斯编程语言 Knox是一种实验性语言,旨在帮助我学习Go和探索编译器设计。 为了方便起见,它充当具有高级构造的系统语言。 该编译器用Go编写,并生成C。它处于开发的早期。 Knox设计的原理是: 明确的。 明确,明确的代码是优先事项,即使简短也是如此。 没什么好奇怪的 通过引用。 所有复杂类型都应通过引用传递,并且指针应隐藏,例如Java和C#。 小语言。 简单而一致的语法,几乎没有构造,可以替代Zig或C。 方便的数据结构。 字符串,列表和映射是一流的数据结构,应该像Python一样容易。 可操作性。 使用任何C库并生成C库。 易于安装和使用。 没有像C#或Java这样的大规模安装,也没有像Go的gopath这样烦人的配置。 足够快。 编译时间,执行时间和内存使用情况应与直接使用C相当。 低开销。 所有运行时依赖项对于系统编程都是可选的。 乖。 合同,错误处理和单元测试是一流的构造。 func main() void { fizzbuzz(300); } func fizzbuzz(n : int) void { for i : int in
【文件预览】:
knox-master
----.gitignore(31B)
----README.md(2KB)
----lexer()
--------lexer.go(7KB)
----token()
--------token.go(2KB)
----examples()
--------fib.knox(199B)
--------builtin.knox(140B)
--------return.knox(76B)
--------bug.knox(41B)
--------casts.knox(72B)
--------future.knox(420B)
--------benchmark.knox(821B)
--------chain.knox(230B)
--------simple.knox(332B)
--------strings.knox(168B)
--------fizzbuzz.knox(369B)
--------classes.knox(457B)
--------types.knox(280B)
--------basic.knox(822B)
--------conditionals.knox(276B)
----LICENSE(1KB)
----grammar.txt(2KB)
----test.sh(70B)
----parser()
--------parser.go(21KB)
----builtin()
--------list.knox(397B)
--------builtin.go(2KB)
--------stl.knox(782B)
----ast()
--------ast.go(3KB)
--------symtable.go(1KB)
--------factory.go(12B)
----emitter()
--------emitter.go(11KB)
--------datatypes.go(412B)
--------knoxutil.h(950B)
----knox.go(2KB)
----typechecker()
--------typeobj.go(2KB)
--------typechecker.go(15KB)
--------primitives.go(3KB)