首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >明确的行号和执行顺序

明确的行号和执行顺序
EN

Stack Overflow用户
提问于 2018-02-03 09:33:09
回答 1查看 212关注 0票数 2

GW-BASIC和许多其他旧的BASIC方言,如C64 BASIC,允许您执行以下操作:

代码语言:javascript
复制
20 PRINT "World"
10 PRINT "Hello"

在执行RUN命令/语句时,这将导致以下输出:

代码语言:javascript
复制
Hello
World

LIST命令/语句将列出程序:

代码语言:javascript
复制
10 PRINT "Hello"
20 PRINT "World"

换句话说,这些基本方言将自动重新排序执行,以符合您使用的行号指定的顺序,而不管您最初在另一个编辑器中键入/保存它们的顺序(例如EDLIN.EXE)。然而,QuickBASIC和BASCOM2未能做到这一点。

我在网上能找到的最早的QuickBASIC版本是QuickBASIC 2.0,它在那里不起作用,只需忽略行号,按我编写的顺序打印它们(即"World Hello")。

BASCOM2-我能找到的最早的MS/IBM BASIC编译器-显然也不支持该功能,而是失败并出现错误(SQ =乱序?):

代码语言:javascript
复制
 0046   0006    10 PRINT "Hello"
                ^ SQ

50434 Bytes Available
50325 Bytes Free

    0 Warning Error(s)
    1 Severe  Error(s)

虽然我当然理解行号经常是多余的,但它似乎是一个有用的特性,可以支持以显式行号顺序(20,10,30 => 10,20,30)而不是隐式行号顺序(20,10,30 => 20,10,30)执行。

有人知道为什么这种传统的基本行为被忽视了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-03 09:52:12

我很惊讶你找到的第一个bascom报告了一个错误。我曾经在BASIC中使用过的所有编译器,我相信我从1982年起就已经使用过很多编译器,它们使行号成为可选的,并支持标签。我记得在我作为专业程序员的第一份工作中,我们设计了一个编译器预处理器,通过用行号和(gasp) GOTO语句替换东西,只插入正确的IF、ELSE IF和END IF语句所需的行。

多亏了MZ-Tools插件,我今天仍然在我仍然支持的VB6会计应用程序中使用行号,它允许我只需单击一个按钮就可以在我的方法和函数中添加和删除行号。这允许我在我的所有错误例程中使用Erl (错误行号),也允许我在所有方法和函数中快速添加一个按钮,这允许我准确地指出任何错误发生的行。

我确信编译器设计者认为行号只对解释器有用,也许bascom的第一个版本认为你会用解释器进行开发和测试,然后编译和分发可执行文件,然后可能后来的版本认为开发人员正在使用文本编辑器,特别是后来的版本,这些版本带有他们自己的IDE,谁还需要行号呢?好吧,如果我们想要精确的错误报告,我们就需要!这是我喜欢Java和Eclipse的原因之一。这里有行号,所以我可以确切地知道错误在哪里,但它们不会像BASIC中那样受到影响(删除行号、添加/删除代码、替换行号)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48593083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档