是否有一种只具有确定性下推自动机功能的编程语言,而不是更多?

时间:2013-04-09 09:42:15

标签: stack state-machine deterministic turing-complete pushdown-automaton

某些编程问题不需要图灵机的全部功能来解决。它们可以用更少的功率解决。我正在寻找功能较弱的编程语言。

是否存在仅限于支持这些功能的高级编程语言:

  1. 一个堆栈,其操作是将值压入堆栈并从堆栈中弹出值。

  2. 一个有限状态机(FSM),用于输入值,从一个状态移动到另一个状态,与堆栈交互,以及输出结果。

  3. 我意识到我可以使用Java或C或Python(等)并通过编写仅使用堆栈和FSM的程序来约束语言。但是,我正在寻找一种只具备这些功能的编程语言,而不是更多。

    换句话说,我不想使用图灵完整的编程语言来解决只需要确定性下推自动机功能的问题。我想使用一种只具有确定性下推自动机功能的编程语言。

2 个答案:

答案 0 :(得分:0)

简而言之,你不会用那么小的力量找到高水平的语言。这不是严格意义上的定义,但是高层意味着对应于复杂性的一定量的抽象。

但是,这不是问题:您不必担心使用太多电量。机器语言,规范有效的语言(最小开销!)是图灵完成的,表明效率与理论力量没有紧密联系。

答案 1 :(得分:0)

我不确定这是否重要,但LR(1)语法精确捕获了确定性PDA的功能 - 如果某种语言有LR(1)语法,那么它就有一个确定性的PDA,反之亦然。因此,如果你看一下像yacc或bison这样的工具,把它们设置为使用LR(1)语法,并且禁止使用任意代码的语义动作,你可以说你剩下的是一个具有精确权力的编程环境一个确定性的PDA。不可否认,这有点紧张。 : - )

希望这有帮助!