【问题标题】:Best way to implement a meta language compiling down to PHP实现编译为 PHP 的元语言的最佳方法
【发布时间】:2011-01-23 15:47:19
【问题描述】:

一段时间以来,我一直致力于开发一种可以编译为 PHP 的元语言的规范 / kitchensink。现在我想开始构建这个东西。在我使用 PHP_Lexergenerator 和 PHP_Parsergenerator 实现微型 DSL 之前,它们工作得很好,但我以前从未构建过这种规模的东西。如果您有任何反馈/建议/经验,我将不胜感激!

我将规范粘贴到http://pastebin.com/613mFGsB。

【问题讨论】:

  • 这方面有进展吗?
  • @musicin3d 变成了github.com/runekaagaard/snowscript,它实际上可以将雪地代码编译成PHP。当我完成 90% 的 1.0 版本时,我已经完全停止使用 PHP 并且失去了兴趣。

标签: php parsing language-design lexical-analysis metalanguage


【解决方案1】:

Haxe 是一种将 PHP 实现为编译目标的语言。它似乎与您想要实现的目标相似。它是 OSS,所以你可以看看他们是如何做到的。

【讨论】:

  • 这是一个非常好的主意,没想到这一点,看起来虽然编译器是在 OCaml 中实现的,我完全空白,但可能有一些有趣的实现细节可以挖掘出来。跨度>
【解决方案2】:

pihipi 是一个有趣的例子,但现在我已经杀了它。所以看看 Haxe:Haxe 是一种将 PHP 实现为编译目标的语言。它似乎与您想要实现的目标相似。它是 OSS,所以你可以看看他们是如何做到的。

【讨论】:

  • 哇,这很有趣。我正在查看您的“parser.y”和“lexer.re”文件,发现它们比 PHP 核心中的相应文件更好看。我们的目标看起来非常相似,只是我在其中加入了大量空白。在编写 PHP 代码时,您是否还在每天使用 pihipi,或者它的趣味性和实用性逐渐消失了?
  • 是的,我猜为新的编程语言创建解析器的最后 20% 需要 很多 时间。
【解决方案3】:

无论如何,不​​要让其他人的类似项目阻止您这样做。不管你在这方面能走多远,你真正从这个项目中得到的是对编码和解析的进一步理解。如果您只是加入现有项目,您将无法深入了解这些知识。

我还想指出,如果它们的原始制造商只是“跳上船”其他人的类似项目,那么像 Linux、Ubuntu 等这样的东西就永远不会存在。不要害怕自己创造东西,有时伟大的事情就会产生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2012-06-02
    • 2016-04-15
    • 2011-09-26
    相关资源
    最近更新 更多