stutter:从头开始用 C 语言实现 Lisp,没有库

上传者: 42138703 | 上传时间: 2022-12-23 17:02:46 | 文件大小: 182KB | 文件类型: ZIP
口吃 - Lisp,从头开始,在 C 中 stutter是一个用 C 语言编写的教育性 Lisp 解释器实现,完全从头开始编写,不使用任何库(显着的例外是editline以保持我的理智)。 换句话说, stutter是一系列广泛的 CS 主题的实践练习,包括 形式语言(词法分析、语法分析、抽象语法树) 元语言评估(eval/apply,宏) 数据结构(列表、树、地图、数组) 自动内存管理(标记和清除垃圾收集) 所有这些都是用最简单、最朴实(和无情)的语言之一实现的:C99。 stutter是一项正在进行的工作(并且在可预见的未来将会如此)。 查看以了解该语言已经具备的功能。 规则 显然,在现代,编写 Lisp 解释器不像以前那样具有挑战性,因为有很多库可以帮助我们实现这一目标。 因此,有两个规则: 从头开始写一切。 不要质疑规则。 入门 克隆 repo 及其子模块(子模块

文件下载

资源详情

[{"title":"( 64 个子文件 182KB ) stutter:从头开始用 C 语言实现 Lisp,没有库","children":[{"title":"stutter-main","children":[{"title":".gitmodules <span style='color:#111;'> 92B </span>","children":null,"spread":false},{"title":".github","children":[{"title":"workflows","children":[{"title":"ccpp.yml <span style='color:#111;'> 825B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"test","children":[{"title":"test_ast.c <span style='color:#111;'> 1.63KB </span>","children":null,"spread":false},{"title":"test_parser.c <span style='color:#111;'> 1.13KB </span>","children":null,"spread":false},{"title":"test_ir.c <span style='color:#111;'> 1.83KB </span>","children":null,"spread":false},{"title":"test_array.c <span style='color:#111;'> 4.49KB </span>","children":null,"spread":false},{"title":"test_list.c <span style='color:#111;'> 5.79KB </span>","children":null,"spread":false},{"title":"lang","children":[{"title":"more.stt <span style='color:#111;'> 2.87KB </span>","children":null,"spread":false},{"title":"core.stt <span style='color:#111;'> 2.31KB </span>","children":null,"spread":false}],"spread":true},{"title":"test_lexer.c <span style='color:#111;'> 3.45KB </span>","children":null,"spread":false},{"title":"test_djb2.c <span style='color:#111;'> 755B </span>","children":null,"spread":false},{"title":"data","children":[{"title":"lexer_reference.txt <span style='color:#111;'> 114B </span>","children":null,"spread":false},{"title":"lexer_test.str <span style='color:#111;'> 95B </span>","children":null,"spread":false}],"spread":true},{"title":"minunit.h <span style='color:#111;'> 373B </span>","children":null,"spread":false},{"title":"test_env.c <span style='color:#111;'> 1.37KB </span>","children":null,"spread":false},{"title":"Makefile <span style='color:#111;'> 3.96KB </span>","children":null,"spread":false},{"title":"test_primes.c <span style='color:#111;'> 960B </span>","children":null,"spread":false},{"title":"test_map.c <span style='color:#111;'> 1.35KB </span>","children":null,"spread":false}],"spread":false},{"title":".ycm_extra_conf.py <span style='color:#111;'> 5.45KB </span>","children":null,"spread":false},{"title":"include","children":[{"title":"lexer.h <span style='color:#111;'> 1.24KB </span>","children":null,"spread":false},{"title":"array.h <span style='color:#111;'> 886B </span>","children":null,"spread":false},{"title":"reader.h <span style='color:#111;'> 401B </span>","children":null,"spread":false},{"title":"exc.h <span style='color:#111;'> 181B </span>","children":null,"spread":false},{"title":"ast.h <span style='color:#111;'> 2.11KB </span>","children":null,"spread":false},{"title":"eval.h <span style='color:#111;'> 142B </span>","children":null,"spread":false},{"title":"ir.h <span style='color:#111;'> 229B </span>","children":null,"spread":false},{"title":"primes.h <span style='color:#111;'> 167B </span>","children":null,"spread":false},{"title":"env.h <span style='color:#111;'> 464B </span>","children":null,"spread":false},{"title":"core.h <span style='color:#111;'> 1.43KB </span>","children":null,"spread":false},{"title":"apply.h <span style='color:#111;'> 180B </span>","children":null,"spread":false},{"title":"parser.h <span style='color:#111;'> 260B </span>","children":null,"spread":false},{"title":"value.h <span style='color:#111;'> 2.10KB </span>","children":null,"spread":false},{"title":"list.h <span style='color:#111;'> 2.79KB </span>","children":null,"spread":false},{"title":"reader_stack.h <span style='color:#111;'> 1.16KB </span>","children":null,"spread":false},{"title":"djb2.h <span style='color:#111;'> 158B </span>","children":null,"spread":false},{"title":"map.h <span style='color:#111;'> 649B </span>","children":null,"spread":false},{"title":"log.h <span style='color:#111;'> 766B </span>","children":null,"spread":false}],"spread":false},{"title":"LICENSE <span style='color:#111;'> 1.03KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"djb2.c <span style='color:#111;'> 1.89KB </span>","children":null,"spread":false},{"title":"value.c <span style='color:#111;'> 4.69KB </span>","children":null,"spread":false},{"title":"exc.c <span style='color:#111;'> 536B </span>","children":null,"spread":false},{"title":"ast.c <span style='color:#111;'> 6.16KB </span>","children":null,"spread":false},{"title":"main.c <span style='color:#111;'> 7.02KB </span>","children":null,"spread":false},{"title":"reader.c <span style='color:#111;'> 12.15KB </span>","children":null,"spread":false},{"title":"reader_stack.c <span style='color:#111;'> 1.99KB </span>","children":null,"spread":false},{"title":"array.c <span style='color:#111;'> 2.25KB </span>","children":null,"spread":false},{"title":"apply.c <span style='color:#111;'> 3.17KB </span>","children":null,"spread":false},{"title":"eval.c <span style='color:#111;'> 17.33KB </span>","children":null,"spread":false},{"title":"primes.c <span style='color:#111;'> 612B </span>","children":null,"spread":false},{"title":"env.c <span style='color:#111;'> 806B </span>","children":null,"spread":false},{"title":"lexer.c <span style='color:#111;'> 11.69KB </span>","children":null,"spread":false},{"title":"map.c <span style='color:#111;'> 4.28KB </span>","children":null,"spread":false},{"title":"list.c <span style='color:#111;'> 2.48KB </span>","children":null,"spread":false},{"title":"core.c <span style='color:#111;'> 25.92KB </span>","children":null,"spread":false},{"title":"log.c <span style='color:#111;'> 98B </span>","children":null,"spread":false},{"title":"ir.c <span style='color:#111;'> 2.59KB </span>","children":null,"spread":false},{"title":"core.stt <span style='color:#111;'> 152B </span>","children":null,"spread":false},{"title":"parser.c <span style='color:#111;'> 9.93KB </span>","children":null,"spread":false}],"spread":false},{"title":"doc","children":[{"title":"screenshot.png <span style='color:#111;'> 177.12KB </span>","children":null,"spread":false},{"title":"0040-array.md <span style='color:#111;'> 1.05KB </span>","children":null,"spread":false}],"spread":true},{"title":"examples","children":[{"title":"fac.stt <span style='color:#111;'> 155B </span>","children":null,"spread":false}],"spread":true},{"title":"lib","children":[{"title":"gc","children":null,"spread":false}],"spread":true},{"title":"Makefile <span style='color:#111;'> 1.11KB </span>","children":null,"spread":false},{"title":".astylerc <span style='color:#111;'> 81B </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 1.97KB </span>","children":null,"spread":false}],"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明