如何为应用程序创建计算机或脚本语言?
Posted
技术标签:
【中文标题】如何为应用程序创建计算机或脚本语言?【英文标题】:How do you create a computer or scripting language for an application? 【发布时间】:2010-10-22 23:09:27 【问题描述】:复制:
Learning to write a compiler Documentation on creating a programming language Learning Resources on Parsers, Interpreters, and Compilers Suggestions for writing a programming language? Compiler-Programming: What are the most fundamental ingredients? Are there some online resources about compiler principle?还有其他我现在懒得找的。p>
我不是在问如何制作一种极其复杂的语言。我只是想了解基础知识。我会使用 c# 作为底层语言。我知道这很模糊。我希望有一些非常基本的东西来指导我。
我想我最感兴趣的是创建脚本语言。例如,我看到有人编写程序,但他们的应用程序有脚本语言。我不想重写 Windows 脚本语言。假设我有一个文本文件阅读器,出于某种原因想要一种脚本语言来自动化某些事情。不知道怎么问。
谢谢。
编辑 - 感谢您的回答。我现在更多地关注学习而不是做事。我可能会使用 LUA,但我正在尝试更多地了解这个概念。
【问题讨论】:
@johnny:明白了——我的意思是我会看看 Lua 是如何做到的。很小,源码比较通俗易懂,文档也很好。 近距离投票的原因现在更清楚了——但我不确定我是否会认为它们是实际重复的,所有这些都非常模糊。我希望有一种方法可以合并它们:) @Mihai:其实有很多编译器和解释器的问题。但他们很难找到,所以我当然不怪约翰尼。但是,当长期承诺的合并工具上线时,将它们链接在一起应该会有所帮助。 好的。我添加了指向更多涉嫌重复的链接。希望您在这里或其中之一获得了您需要的答案。 @Johnny:尝试提出另一个问题:“如何创建像 Lua 或 Tcl 这样的嵌入式脚本语言?”我认为可能会通过审查(但尚未得到答复)。 【参考方案1】:您可以查看LUA - 每次我问自己“我将如何在 insert one of我的应用在这里?”
编辑:这里有一些例子(取自links page,不可否认,笨拙的Lua Wiki)关于如何在你的应用程序中嵌入Lua:
Embedding Lua in C: Using Lua from inside C Embedding a scripting language inside your C/C++ code Embeddable scripting with Lua
【讨论】:
+1。 Lua 的全部存在理由是轻松集成到您的应用程序中,并且在性能方面不碍事,您不太可能在合理的时间范围内实现更好的东西。 另外,由于作者将 .NET 声明为主机平台:luaforge.net/projects/luainterface 是 C#/Lua 绑定。 (不能保证质量,但它似乎是最新的和活跃的。) 对 OPs 问题的回答很好,而不是问题,顺便说一句。【参考方案2】:您可以使用现有的语言,例如 Python 或 javascript。例如,对于 Javascript,Java 应用程序有 http://www.mozilla.org/rhino/。所以通常你不需要真正发明一种新语言,你只需为已经存在的语言提供一个自定义 API。
【讨论】:
【参考方案3】:首先你需要一个像 lex 这样的词法解析器,然后是一个像 bison 这样的语法解析器。
然后您可以使用语法解析器来创建解释器来“执行”语法结果。
这就是大多数脚本语言的做法。
p.s:另一种方法是通过编写 shell 来练习 - shell 脚本(bash、csh 或 sh)是高度简化的脚本语言。
【讨论】:
【参考方案4】:一些术语是有序的。您可能在谈论domain-specific language。 将文本文件转换为“可执行文件”的两种基本方法:a compiler 或 an interpreter。解释器更适合脚本概念,因为它更容易一次构建和执行一行。请注意,除了一个非常简单的语言之外,编写一个像样的解析器或一个像样的解释器都不是微不足道的。口译的经典著作是SICP,但这本书对于初学者来说是一本相当难的书。
【讨论】:
【参考方案5】:Scott Hanselman 在他的 latest hanselminutes podcast 中提到,集成 IronPython 以允许对现有应用程序进行脚本编写非常容易。
如果您对让应用程序可编写脚本的最终目标感兴趣,那么您绝对应该考虑使用现有语言,而不是尝试编写自己的语言。
如果您对编写自己的脚本语言的教育体验更感兴趣,那么您应该去做!
【讨论】:
【参考方案6】:没有必要创建一种新的脚本语言,例如。 Rhino 是一种广泛使用的可嵌入 javascript (http://www.mozilla.org/rhino/) 或来自 MS 的 Jscript,您可以直接在您的产品中使用。
我已经按照您的要求进行了 - 我曾经创建了自己的方案解释器。这非常有效,但我们重新发明了很多技术,并没有真正获得很多额外的好处。如果只使用其中一种可用的方案,我们会好得多。即使很有趣也很成功,我也不会再做那个决定了。
【讨论】:
以上是关于如何为应用程序创建计算机或脚本语言?的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac 上,如何为 python 脚本创建一个拖放应用程序,其中脚本名称而不是 Python 显示在菜单栏(等)中?