【问题标题】:Interpreter in Python: Making your own programming language?Python 中的解释器:制作自己的编程语言?
【发布时间】:2011-03-08 03:44:20
【问题描述】:

记住,这是使用 python。 好吧,我今天正在摆弄我制作的名为 Pyline 的应用程序。它是一个类似命令行的界面,具有一些很酷的功能。但是,我在制作的时候有个想法:既然它像一个“操作系统”,它不会有自己的语言吗?

嗯,我在网上看到了一些关于如何制作解释器、解析器和编译器的文章,但对我来说真的不可读。我所看到的只是一堆代码。我是那些需要 cmets 或自述文件或某些表单或无需代码本身就与用户进行交流的人之一,因此我认为 Stack Overflow 对像我这样的青少年来说会很棒。我能得到一些帮助吗?

【问题讨论】:

  • “既然它像一个“操作系统”,它不会有自己的语言吗?” 是什么意思,顺便说一句?
  • 如果问题是“我能得到一些帮助吗?”答案是肯定的,只要您提出正确的问题。
  • @Galilsnap:所有 (99%) 操作系统都以 C 为基础,并带有一些汇编程序的胆量来使系统级的东西工作。这与创建编程语言完全不同。
  • 如果您用“OS”来指代应用程序,那么“它自己的语言”当然是 Python,因为您使用该语言编写了应用程序。大概这就是您所说的“本地”语言。
  • 将命令作为输入的交互式解释器称为 Shell。在 Windows 上这是 CMD shell,在 Linux 上通常是 Bash。这些实际上只是在操作系统上运行的应用程序。它们具有内置命令,还提供了运行其他程序的便捷方式。 GUI 桌面是图形外壳,允许您使用鼠标而不是键入命令来做事。我建议阅读操作系统架构。维基百科是一个很好的起点。

标签: python compiler-construction parsing interpreter


【解决方案1】:

您首先需要一些基础才能真正创建一种编程语言。 我强烈建议拿起一份Programming Language Pragmatics 的副本,它的可读性很强(比Dragon book 强得多),适合自学。

一旦您准备好开始使用解析器,ANTLR 就可用性而言是解析器生成器的“黄金”标准(尽管 flex+bison/yacc 非常强大)。

【讨论】:

  • 那个家伙实际上是在 SO! :D 我喜欢他的回答。
【解决方案2】:

我刚来Xtext,一个语言开发框架。也许这就是你可能想看看的东西。

考虑到 Python,您可能会发现实现 Logo 的版本很有启发性。如果您愿意,您可以暂时跳过解析/词法分析阶段,并首先提出一个面向对象的版本,如果您的 OOP 技能符合要求,您就可以开始了。稍后您可以将它与一些图形库挂钩以实际绘制一些东西。

除了 Logo,您可能还想查看 L-systems。请特别参阅The Algorithmic Beauty of Plants 以获得灵感。

【讨论】:

    【解决方案3】:

    就像戏剧一样,我建议从一本关于这个主题的好书开始。我绝对可以推荐 Terence Parr(ANTLR 背后的人,一个常见的解析器生成器)的Language Implementation Patterns

    【讨论】:

    • 我不会向该主题的新手推荐语言实现模式
    【解决方案4】:

    请参阅 Peter Norvig 的 Scheme interpreter in 2 pages of Python 并提供大量解释。还有一个从那里链接的更高级的版本,一旦你了解了更简单的版本,就值得一读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多