V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
summerLast
V2EX  ›  科技

用 rust 撸了一个 lisp 解释器

  •  
  •   summerLast · 2022-07-16 17:46:28 +08:00 · 1527 次点击
    这是一个创建于 872 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端时间正好有空就学习了 rust 然后用它写了一个lisp 的解释器 这里有个 liunx_x86 版的可执行文件 可以下载下来把玩

    有两种模式 一种是 cmd 命令行的形式,一种是直接加载文件运行的模式

    在原有 scheme 方言的基础上增加了 tcp 的服务器功能

    (
        (define f (call-with-input-file "./demo.html" read-string))
        (call-with-tcp-listener "127.0.0.1:8088" ( lambda (in) (
           (display  (byte-vector->string (read-byte-vector in 4096)))
           (string-append "HTTP/1.1 200 OK\r\n\r\n" f)
        ))))
    

    欢迎大家讨论,也看看后续是否继续迭代新特性

    9 条回复    2022-07-20 10:40:49 +08:00
    zagfai
        1
    zagfai  
       2022-07-16 17:52:31 +08:00   ❤️ 1
    手动点赞。
    summerLast
        2
    summerLast  
    OP
       2022-07-16 17:53:41 +08:00
    @zagfai 谢谢
    summerLast
        3
    summerLast  
    OP
       2022-07-16 18:00:19 +08:00
    还可以中文编程
    ```
    (
    (define 定义 define)
    (定义 定义函数 defun)
    (定义 显示 display)
    (定义 换行 newline)

    (定义函数 打印 (打印的字)
    (显示 打印的字)
    (换行)
    )

    (打印 '你好 中国')
    )
    ```
    kkkiio
        4
    kkkiio  
       2022-07-16 18:36:35 +08:00   ❤️ 1
    你好像没实现 GC ,Arc<RwLock<T>> 有循环引用问题吧
    yuelang85
        5
    yuelang85  
       2022-07-16 20:33:36 +08:00   ❤️ 1
    summerLast
        6
    summerLast  
    OP
       2022-07-18 10:37:43 +08:00
    @kkkiio 是的 变量相关的信息现在全部放在 env 里面了 ,env 持有者结束之后 env 就结束了 env 是一个树形的结构
    kkkiio
        7
    kkkiio  
       2022-07-18 18:55:18 +08:00 via iPhone
    @summerLast set-car! 就能制造循环引用了
    summerLast
        8
    summerLast  
    OP
       2022-07-19 09:05:10 +08:00
    @kkkiio 是的,只有引用次数归 0 后才会被 gc
    summerLast
        9
    summerLast  
    OP
       2022-07-20 10:40:49 +08:00
    捞一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:11 · PVG 04:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.