- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近对 DSL 很好奇,特别是如何在 Lisp 中实现它们,因为与其他替代方案相比,它看起来就像小菜一碟。
在互联网上寻找信息时,我找不到 Lisp 中非 Lisp DSEL 的任何证据。
所以我的问题是:
这是如何实现的?
lisp 的阅读器可以被将代码转换为 lisp 结构的自定义阅读器替换吗?
最佳答案
简短版本:Racket这样做。
更详细地说:Racket,Scheme 的后代,这里有一个经过深思熟虑的故事。 Racket 模块/文件可以以语言声明开头,例如
#lang algol60
...然后文件的其余部分可以用给定的语言编写。 (是的,algol60 is built in。)
为了开发自己的语言,您需要编写一个语言规范包,它展示了如何将该语言的语法扩展为基础语言(在本例中为 Racket)的语法。任何人都可以编写这样的包,然后分发它们以允许其他人用这种语言编写程序。 Racket 中包含此类语言规范的示例,例如前面提到的 algol 60 示例。
我认为这正是您所要求的?
ObDisclaimer:是的,我是 Racket 开发者。
关于scheme - 具有非 Lisp 语法的 CL/Scheme DSEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683111/
我有一个问题 SELECT DISTINCT SQL_CALC_FOUND_ROWS cl.id AS id, cl.column1 AS column1, cl.column2 AS column2
我有一个 CL 编号,我想要该更改列表后提交的所有更改列表的 CL 编号。是否有执行此操作的 perforce 命令? 最佳答案 p4 changes //... @yourchangelistnum
我正在使用安装了 quicklisp 的 clozure cl(版本 1.8-r15286m)在 Windows 7 64 位系统上工作。 我需要一些用于普通 lisp 的 freetype2 绑定(
我有示例“你好,世界!”来自网络的代码,我想在我大学服务器的 GPU 上运行它。当我输入“gcc main.c”时,它会响应: CL/cl.h: No such file or directory 我
我正在尝试在 Android Studio 中构建一个 openCL 程序,但一直遇到以下问题: Android Studio fatal error: CL/cl.h No such file or
我正在开发一个 kiosk gui,它是用 ruby/gtk 编写的,使用的是 ubuntu。我希望能够从 ruby/gtk gui 中重新启动——具体来说,我想让刷管理卡的人选择重新启动机器
我安装的一些 elisp 函数会生成警告: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'. 如
我正在尝试成功执行一个来自名为 Sia Coin 的新加密货币的 make 文件。可以在这里找到Sia Coin GPU Miner 。它相对较新,因此有些东西需要更多的手动安装。我在 Ubuntu
我正在尝试在 C++ 的 Visual Studio 2015 中使用 OpenCL 在 Windows 7 上编译一个简单的“hello world”程序。尝试构建时,出现此错误: Cannot o
我正在使用 OpenCL 运行内核基准测试。我知道我可以使用 OpenCL 供应商提供的各种工具(即 ioc64 或 poclcc)离线编译内核。问题是我得到的性能结果我无法用这些工具的程序集、Ope
在 iAP88/86 文档中,移位和循环的时序信息取决于 CL 中的移位计数 (p2-64)。这似乎暗示它在 CL 中循环计数,进行那么多单位移位。 所以我的问题是,在循环/移位完成后,CL 是否仍然
所以我尝试制作这样的布局: 一种方法是使用底部应用栏 Anatomy ,但底部应用栏的问题是它只能在坐标布局中使用。但我想要一个 ListView 或说它上面的任何其他 View ,所以我使用约束布局
我正在尝试通过 Qt Creator 在我的系统上运行“Valar”基准测试应用程序,但在构建代码时出现错误: https://github.com/Frinhard/valar-bench 我输入命
为了解决这个问题,我阅读了本网站提供的所有解决方案,但它仍然存在。 当我在 windows 10 C:\pyopencl-2016.2.1>setup.py install 中的 cmd 中运行此命令
我是 SYCL/OpenCL/GPGPU 的新手。我正在尝试构建和运行常量加法程序的示例代码, #include #include #include #include namespace sy
在大量搜索此问题的解决方案后,我发现尚未针对 Windows 正确记录此特定错误。所以我决定将这个问题连同解决方案一起发布。抱歉,如果我将其发布在错误的部分。我希望这个解决方案能帮助用户解决 PyOp
我是 CMake 的新手,在这里遇到了一些障碍,想知道这个问题是否有“优雅”的解决方案,或者可能只是一个简单的解决方案。 例如,为了设置编译器标志,我正在执行以下操作: target_compile_
我们正在使用带有gmake的VC++ 2015。该编译器如何确定它是Release版本还是Debug版本? cl.exe / nologo / Zc:wchar_t / wd4675 / wd4407
我正在尝试分析C++中OpenCL内核的性能。 我目前使用std::chrono每次在保存任何内容之前保存开始时间,然后再调用cl::finish(),然后保存结束时间。 虽然大多数结果看起来都是准确
我知道一点Scheme(很久以前读过SICP),写了这个程序: (define (prl k m) (define (print-line n) (cond ((> n 0) (displ
我是一名优秀的程序员,十分优秀!