重复:

还有一些我现在懒得去找。


我不是在问如何创建一种极其复杂的语言。我只是想了解基础知识。我会使用 C# 作为底层语言。我知道这很模糊。我希望有一些非常基本的东西来指导我。

我想我最感兴趣的是创建脚本语言。例如,我看到有人编写程序,但他们的应用程序有脚本语言。我不想重写 Windows 脚本语言。假设我有一个文本文件阅读器,并且出于某种原因想要一种脚本语言来自动化某些操作。我不知道如何询问。

谢谢。

编辑-谢谢您的回答。我现在更多的是为了学习而不是为了做事。我可能会使用 LUA,但我正在尝试更多地了解这个概念。

有帮助吗?

解决方案

你可以看一下 路亚 - 每次我问自己这个问题“我如何自动化 在此插入任务在此插入我的应用程序之一?"

编辑:这里有一些例子(摘自 链接页面, ,不可否认,笨拙 卢阿维基)关于如何将 Lua 嵌入到您的应用程序中:

其他提示

您可以使用现有语言,例如 Python 或 Javascript。例如,对于 Javascript,有 http://www.mozilla.org/rhino/ 对于 Java 应用程序。因此,通常您不需要实际发明一种新语言,只需为已经存在的语言提供自定义 API 即可。

一些术语是有序的。您可能正在谈论一个 领域特定语言。将文本文件转换为“可执行文件”的两种基本方法: 编译器 或者 口译员. 。解释器更适合脚本概念,因为它更容易构建和一次执行一行。请注意,除了非常简单的语言之外,编写一个像样的解析器或像样的解释器都不是微不足道的。关于口译员的经典著作是 SICP, ,但这对于初学者来说是一本相当困难的书。

斯科特·汉塞尔曼 (Scott Hanselman) 在他的著作中提到 最新的汉塞尔分钟播客 集成 IronPython 以允许对现有应用程序编写脚本非常容易。

如果您对让应用程序可编写脚本的最终目标感兴趣,那么您绝对应该考虑使用现有语言,而不是尝试编写自己的语言。

如果您对编写自己的脚本语言的教育体验更感兴趣,那么您应该去尝试!

首先你需要一个像 lex 这样的词法解析器,然后是像 bison 这样的语法解析器。

然后您可以使用语法解析器创建一个解释器来“执行”语法结果。

大多数脚本语言都是这样做的。

附:另一种方法是通过编写 shell 进行练习 - shell 脚本(bash、csh 或 sh)是高度简化的脚本语言。

不需要创建新的脚本语言,有几种,例如。Rhino 是一种广泛使用的嵌入式 javascript (http://www.mozilla.org/rhino/) 或来自 MS 的 Jscript,您可以直接在您的产品中使用。

我已经按照你要求的方式走了 - 我曾经创建了自己的方案解释器。这确实很有效,但我们重新发明了很多技术,并没有真正获得很多额外的好处。如果我们只使用现有的方案之一,情况会好得多。我不会再做出这个决定,尽管它很有趣而且很成功。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top