无语法编程语言

Pwn*_*nna 4 theory computer-science programming-languages genetics

这可能是一个非常奇怪的问题,它肯定是.我不太熟悉编程语言是如何用传统方法制作的,所以我想知道,是否可以设计无语法编程语言?这意味着任何输入都是有效的并执行某个计算,并且相同的输入将始终执行相同的操作.将不会出现语法错误(允许逻辑和运行时错误,程序可能崩溃,进行随机计算等).

我想到了这一点,因为遗传学基本上是我的理解,就像那样.

编辑:我认为存在一些误解.无语法只是意味着所有输入都将计算,解释器/编译程序将遵循该特定指令集,但可能是随机的.

此外,它必须匹配每个输入都有1个且只有1个输出的事实.诸如语法错误之类的内容违反了该规则.

编辑2很多人都在使用语法部分.忘记语法,关注任何输入将产生UNIQUE输出的事实.

Jon*_*rdy 8

的种类.

语法是指输入的顺序,所以如果你的语言的含义不依赖于顺序,那么无论输入的形式如何,都可以构造有意义的"句子",那么是的,你可以使用无语法语言.这种语言必须以某种方式被大小写变形,或者只是为输入的每个可能的可分离项(标记,字符等)定义含义.你不能依赖这些物品的顺序,但你可以依赖它们的数量,所以这就是它.

总而言之,它是相当深奥的,因为操作语义通常依赖于语法,并且对于大多数人来说并不是很明显,这种依赖性并不是绝对必要的.这是一种非图灵完备的无语法语言:

  • 计算a字符数.
  • 计算b字符数.
  • 忽略其他一切.
  • 产生两个计数的商.

这是图灵完整的一个:

  • 计算a字符数.
  • 计算b字符数.
  • 忽略其他一切.
  • 获取a字符数的二进制表示.
  • 使用等于b字符数的零的前缀.
  • 将结果评估为Jot程序.

再说一次,兔子洞有多深?您输入的基本单位是什么?如果它是字节或字符,那么你可以使用大量可能的输入标记.但是,如果你承认字符中的位有一个基本的排序,那么你必须进一步减少问题,并且完全取决于0位的数量和1位的数量,这些数据仍然绰绰有余从中构建有意义的程序的信息.就拿我的图灵完备的例子,替代ab分别与"清除位"和"设定位".

当然,也有人认为Lisp在某种程度上是无语法的,因为它的语法是程序抽象结构的直接表示,更不用说整个程序作为数据的东西了.真的不是说Lisp及其派生词是严格语法的,因为它们在语法和意义之间具有一对一的对应关系.就像整数文字一样,Lisp程序实际上只是一个很棒的大代码文字.