在 Erlang 里嵌入 EYG:给宿主程序一个受控的脚本层
来源:eyg.run — 2026-10-21
📋 概述
EYG 官方指南演示如何把 EYG 脚本能力加进一个 Erlang 应用。装上 eyg_parser、eyg_interpreter、eyg_analysis 三个包,二十来行代码就能执行纯 EYG 程序,再把解析错误与运行错误接上各自的美化输出。涉及副作用时,程序会在未处理的效果处中断,把完整程序状态交回宿主,宿主实现该效果后用返回值续跑,于是「能访问什么」完全由宿主决定。
🔑 核心要点
- 最小可用版本只需 all_from_string 加 execute,两个调用就能跑自包含的纯程序
- 错误美化分包处理:parser 负责语法错误渲染,interpreter 的 simple_debug 负责值与错误描述、提示和定位
- 效果模型是 perform Log("...") 触发中断,未处理效果会明确报「unhandled effect」并指出位置
- 宿主的解法是一个 loop 函数:匹配 unhandled_effect,实现成功后递归续跑,脚本与宿主的分界线就是效果集合
- 典型用途:把脚本开放给终端用户做小查询、做带预定义任务的安全 shell、或给 agent 提供一组业务函数
💡 金句
Embedding EYG in Erlang gives you a scripting environment with tight controls over what can be accessed.
👍 0
👎 0
← 返回 Lobsters 首页