【发布时间】:2008-10-08 21:55:30
【问题描述】:
拥有一种语言的规范表示通常很方便(在我的情况下,它们通常是特定领域的语言);但是,我相信所涉及的语言的表达能力有严格的限制,这些语言决定了是否可以为该语言的任意程序确定和/或创建规范形式。不幸的是,我一直找不到我(模糊地)记得在其中读过的参考资料。
一方面,创建语言的规范表示与许多硬图问题(例如:图同构)具有相当的复杂性似乎是合理的,但另一方面,iirc、gcc、yhc 和 ghc 等编译器使用中间表示来生成各种格式的输出(汇编、javascript 等),所以这至少在某些形式下是一个已解决的问题。
何时可以确定/生成给定语言的规范形式? (该语言的表达能力如何,语言表达能力如何影响规范形式的效用?)请尽可能提供参考或证明。
编辑: 例如,Regular Language(例如:正则表达式的“纯”形式)不能表达许多与 Turing-complete language 相同的东西。换句话说,您不能用常规语言编写 Web 服务器,但可以使用 lambda 演算)。我的问题是关于理论上的可能性,并且确实有与复杂性理论有关的具体答案。如果我有一个 DSL 需要传输到另一个系统,那么在传输它之前生成该代码的规范形式通常是有益的,因为这将解耦两个不同系统使用的独立表示。 然而,如果将图灵完备语言翻译成规范形式是 P 空间完备或 NP 完备的,那么您不应该浪费时间尝试构建规范形式——要么找到另一种方法,或者将语言复杂性降低到可以在多项式时间内被规范化的东西。
【问题讨论】:
-
这里不想成为纳粹的拼写,但不应该只用一个n来写cannonical吗? “典范”? ;)
-
这个问题似乎没有明确的答案。我真的不确定你在问什么,尽管我知道所有单词的意思。
-
@Mecki 谢谢!修正了错字。
-
@Marcin 我试图澄清这个问题。我对语言表现力与为给定表现力类生成规范形式的复杂性之间的关系感兴趣。
标签: dsl language-theory canonical-form