2

BASICで作成したプログラムのコンパイルに問題があります。これは、BASICでオペレーティングシステムを完全に作成できるかどうかを確認するために作成したDOSシミュレーターです。コンパイルしようとするたびに、次のメッセージが表示されます。

!SYNTAX ERROR IN LINE 15, COLUMN 50
 UNEXPECTED E
 EXPECTING : OR END OF LINE

これを解決するために何を変更しますか?

10 PRINT 
11 PRINT "Starting..."
12 PRINT 
13 PRINT 
14 INPUT "Type the location of the Command Interpretter:"; I$
15 IF I$ = "C:\WINDOWS\COMMAND.COM" THEN GOTO 14 ELSE GOTO 13
16 INPUT "C:\>"; D$
17 IF D$ = "FORMAT" GOTO 25
18 IF D$ = "FDISK" GOTO 47
19 IF D$ = "HELP" GOTO 16
20 IF D$ = "DIR" GOTO 16
21 IF D$ = "MKDIR" GOTO 16
22 IF D$ = "WIN" GOTO 16
23 IF D$ = "CD" GOTO 16
24 IF D$ = "DEL" GOTO 16
25 PRINT "WARNING, ALL DATA ON REMOVABLE DISK"
27 PRINT "DRIVE A: WILL BE LOST!"
28 INPUT "Proceed with Format (Y/N)"; F$
29 IF F$ = "Y" THEN GOTO 28
30 IF F$ = "N" THEN GOTO 16
31 PRINT 
32 PRINT 
33 PRINT 
34 PRINT "Fotmatting 1.44MB"
35 PRINT "Format complete."
36 PRINT "Writing out file allocation table"
37 PRINT "Complete."
38 PRINT "Calculating free space (this may take several minutes)...................."
39 PRINT "Complete."
40 PRINT 
41 INPUT "Volume Label (11 charchters, ENTER for none)"
42 PRINT 
43 PRINT "              1,440MB total disk space"
44 PRINT "              1,440MB available on disk"
45 PRINT 
46 PRINT "                       512 bytes in each allocation unit."
47 PRINT "                  32,624 allocation units available on disk."
48 PRINT "Volume Serial Number is 326A-1312"
49 GOTO 16
50 PRINT "Incorrect DOS Version"
51 PRINT 
52 GOTO 16

VintageBASIC1.0.1をコンパイラーとして使用しました。誰が何が起こっているのか知っていますか?Windoze NT

4

4 に答える 4

1

ELSEヴィンテージベーシックにはキーワードがないと思います。そのため、unexpected 'E'エラーが発生します。

ヴィンテージBASICunstructured BASICだと思います。例については、ウィキペディアの記事を参照してください:http: //en.wikipedia.org/wiki/BASIC_programming_language

また、26と27の行番号が重複しているため、他のエラーが説明されています。

于 2010-07-21T18:34:17.767 に答える
1

お使いのバージョンのBASICに本当にありますELSEか?すべてが持っているわけではありません...

あなたはプログラミングを学んでいると思いますよね?質問していいですか?なぜベーシックなのか?
グラフィックOSで使用できることを学ぶために、もっと便利で強力な(そして主にプログラミングの現代的な慣習を使用する)言語がたくさんあると思います。たとえば、Pythonのように学ぶのはそれほど複雑ではありません(私の息子はあなたの年齢を持っています彼はPythonが大好きです)。それは単純なことのための単純な言語ですが、必要に応じて非常に強力です(そして複雑でもあります!)。

幸運を!

于 2010-07-21T18:34:42.113 に答える
1

最初の2つの警告は、プログラムに2行26と2行があることが原因で発生します27

IF THEN3番目のメッセージは、サポートしているだけで、サポートしていないBASICからのものだと思いますIF THEN ELSE。この場合、でエンコードできますIF GOTO

于 2010-07-21T18:35:14.520 に答える
0

最初に投稿されたコードを変更し、重複する行番号を削除したことに注意してください。これにより、この回答の最初の部分が奇妙に見えますが、そのままにしておきます。

コンパイラは、同じ行番号を再利用していることを通知しています。コードの次のセクションに注意してください。

26 PRINT "DRIVE A: WILL BE LOST!"
27 INPUT "Proceed with Format (Y/N)"; F$
26 IF F$ = "Y" THEN GOTO 28
27 IF F$ = "N" THEN GOTO 16

修正は、行の番号を付け直すことです。これで、行番号を必要とする言語の行間で通常1の増分を使用しない理由がわかりました。(ただし、それを実行するためのツールを見つけることも、作成することもできます。)

からのエラーについて:

15 IF I$ = "C:\WINDOWS\COMMAND.COM" THEN GOTO 14 ELSE GOTO 13

私はこれまで「VintageBASIC」に出くわしたことはありませんが、他のサポートをサポートしていないことに関する他の回答が正しいと仮定すると、次のようなものが必要になります。

15 IF I$ = "C:\WINDOWS\COMMAND.COM" THEN GOTO 14 
16 IF I$ <> "C:\WINDOWS\COMMAND.COM" THEN GOTO 13

「<>」を「!=」またはBASICが演算子と等しくないものとして使用するものに置き換える必要がある場合があります。また、すでに16行目があるため、番号の付け直しをさらに行う必要があります。

于 2010-07-21T18:35:50.057 に答える