【问题标题】:How do you create a computer or scripting language for an application?如何为应用程序创建计算机或脚本语言?
【发布时间】:2010-10-22 23:09:27
【问题描述】:

复制:

还有其他我现在懒得找的。​​p>


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

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

谢谢。

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

【问题讨论】:

  • @johnny:明白了——我的意思是我会看看 Lua 是如何做到的。很小,源码比较通俗易懂,文档也很好。
  • 近距离投票的原因现在更清楚了——但我不确定我是否会认为它们是实际重复的,所有这些都非常模糊。我希望有一种方法可以合并它们:)
  • @Mihai:其实有很多编译器和解释器的问题。但他们很难找到,所以我当然不怪约翰尼。但是,当长期承诺的合并工具上线时,将它们链接在一起应该会有所帮助。
  • 好的。我添加了指向更多涉嫌重复的链接。希望您在这里或其中之一获得了您需要的答案。
  • @Johnny:尝试提出另一个问题:“如何创建像 Lua 或 Tcl 这样的嵌入式脚本语言?”我认为可能会通过审查(但尚未得到答复)。

标签: programming-languages scripting


【解决方案1】:

您可以查看LUA - 每次我问自己“我将如何在 insert one of我的应用在这里?”

编辑:这里有一些例子(取自links page,不可否认,笨拙的Lua Wiki)关于如何在你的应用程序中嵌入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 compileran interpreter。解释器更适合脚本概念,因为它更容易一次构建和执行一行。请注意,除了一个非常简单的语言之外,编写一个像样的解析器或一个像样的解释器都不是微不足道的。口译的经典著作是SICP,但这本书对于初学者来说是一本相当难的书。

      【讨论】:

        【解决方案5】:

        Scott Hanselman 在他的 latest hanselminutes podcast 中提到,集成 IronPython 以允许对现有应用程序进行脚本编写非常容易。

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

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

        【讨论】:

          【解决方案6】:

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

          我已经按照您的要求进行了 - 我曾经创建了自己的方案解释器。这非常有效,但我们重新发明了很多技术,并没有真正获得很多额外的好处。如果只使用其中一种可用的方案,我们会好得多。即使很有趣也很成功,我也不会再做那个决定了。

          【讨论】:

            猜你喜欢
            • 2019-07-31
            • 1970-01-01
            • 2011-01-27
            • 1970-01-01
            • 2011-10-31
            • 1970-01-01
            • 2011-05-14
            • 1970-01-01
            • 2021-02-19
            相关资源
            最近更新 更多