当前位置:  开发笔记 > 编程语言 > 正文

而语言

如何解决《而语言》经验,为你挑选了3个好方法。

对于我的计算语言类的理论,我们得到了一个家庭作业,用一种语言来实现一段代码,该语言只有流控制的while语句(没有if语句).这主要是为了证明你可以只使用while循环编写图灵完备语言.

对于那些能理解语言语法的人,以下是语言规则:

S -> S;S | while C do S od | id := E

E -> E + T | T | E - T

T -> T * F | F | F / T

F -> id | cons | (E)

C -> E = E | E > E | E < E | E >= E | E <= E | E != E | C and C | C or C | not(C)

这是从我的班级笔记中复制的,所以如果缺少或不正确,请不要责怪我!

要实现的代码是:

if d = 0 do
    x := 1
else
    x := a / d

无论如何,如果您想继续使用上述语言规则进行编写,请继续.否则,请用你最熟悉的语言写下来.但是有一些注意事项!

否则if语句或除while循环之外的任何其他类型的流控制.

不作弊:上面的语法不包括任何break语句,return语句或异常.不要使用它们.

我已经为此编写了一段代码(我将发布这些代码以证明这不是一个演示我的代码帖子).我有点好奇其他任何人都能想到的.



1> Toon Krijthe..:

它可以通过一个while循环完成,但不是那么清楚:

while d == 0 do
  d := 1;
  a := 1
od
x := a / d;

解释,如果d = 0,则d将为1,a也将为1.这结束循环.

现在x设置为a/d,这很好,因为如果d为0,则a/d的计算结果为1.



2> Jason Baker..:

这是我的代码:

continue := True
while d = 0 and continue do
    x := 1
    continue := False
od
while d != 0 and continue do
    x := a/d
    continue := False
od



3> Zach Scriven..:

这会有用吗?

td := d
x := 1

while td != 0 do
    x := a / d
    td := 0
od

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有