2013-08-08 2 views
5

Я работаю над некоторым старым qbasic кодом. Это беспорядок со всеми утверждениями Goto. Правильно ли, что следующая строка всегда будет возвращена?Quick Basic Colon Line Separator

IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN 

Так что, если я правильно понимаю, двоеточие отделяет утверждения в одной строке. if относится только к TARGET = X. GOSUB, TEMP = и RETURN всегда выполняются. Верный?

Часть моей путаницы, потому что очень следующая строка читает

IF FLAG = 1 THEN STEP = X: GOSUB 115000 

И так как метка для второго утверждения никогда не используется в GOTO я не могу видеть, что она когда-нибудь казнены.

+1

Является ли это «Nibbles» или «Gorilla»? –

+0

@JoeEnos Ни. Это старый код IEEE. –

+0

По крайней мере, это не PL/I: ['if then then then = else; else else = if; '] (http://wiki.tcl.tk/14057?redir=13395). Современные языки зарезервировали ключевые слова по причине ... ;-) –

ответ

5

Да, я считаю, что ваша оценка верна. Двоеточие - это разделитель операторов, который позволяет вам иметь несколько операторов в одной строке. Предполагая, что ваша подпрограмма на 55000 возвращается, эта строка также должна вернуться.

Я был неправ. Запуск этой программы:

if 1=2 then print "Never printed" : print "how about this?" 
print "End of program" 

на qb64.net гравюр только End of program. Я предполагаю, что его детали грамматики такие же, как у Qbasic, хотя это обратное инженерное усилие.

Как в стороне, этот код написан в стиле до QBasic (например, с использованием GOSUB и номеров строк). Существует сценарий, который часто поставляется с QBasic (remline.bas, я считаю, он был вызван), который должен помочь перевести эти программы в более новый стиль. Однако я никогда не использовал его сам.

+0

Спасибо. Я должен сказать, что только хуже, чем код спагетти, плохо написанный код спагетти. –

+0

Я нашел эту ссылку, которая, кажется, говорит, что мое предположение неверно. http://stackoverflow.com/questions/367325/vb-net-if-statement-and-the-colon –

+0

Ну, я просто протестировал его на [qb64.net] (http://qb64.net), который, по-видимому, теперь имеет интерфейс для их реализации, и оказывается, что я ошибался. Спасибо, что сообщили мне, поэтому я могу отредактировать свой ответ :). – Troy