コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
Na ◆QoELVrBXBQCI
2020/1/5 11:52
情報交換
ラベル=文字列?
ラベルは文字列扱いだとどこかで聞いたのですが...
?@A+"B" →OK(@ABと表示)
BGMSETD 128,@A+"B" →OK(@ABのMMLがセットされる)
RESTORE @A+"B" →Syntax error

もちろん"@A"+"B"にすれば済む話ではありますが。

コメント

アバター
さすらいの名無し 2020/1/5 12:13 ◆LWMA5UzCJb3e
ダイレクトモードで
?A @A
と入れたら、
Can't use from direct mode
と出ました。
普通ならsyntax errorのはずなんですけどね…。
アバター
さすらいの名無し 2020/1/5 12:16 ◆LWMA5UzCJb3e
エディットモード(?)だとエラーも出ずに普通に実行できました。
0
と出ました。
?A,@Aだと
0 @A
とでました(両モード共に)
アバター
さすらいの名無し 2020/1/5 12:19 ◆LWMA5UzCJb3e
BGMPLAY @0CDEFGAB
とかも普通にいけました。
アバター
Na 2020/1/5 12:53 ◆QoELVrBXBQCI
?A @A は ?A:@A と解釈されて、後ろの@Aはただのラベル(GOTOとかで飛んでくる用)になってしまうのでダイレクトモードではCan't use from direct mode、エディットモードでは0(Aの中身だけ表示)になるのだと思います。
アバター
Na 2020/1/5 12:55 ◆QoELVrBXBQCI
それよりRESTOREだけ@A+"B"ができないのはなんででしょうか
アバター
初心者 2020/1/6 0:45 ◆ULvuffpmw1rp
"@A+"B""
と解釈するからじゃないでしょうか?
アバター
あきと 2020/1/6 8:44 ◆qGd5dQw2g3a2
プリプロセッサのような処理が働いて「@a」などのラベルは早い段階でインデックス化されてしまうのではないでしょうか。
たぶんRESTORE ラベルとRESTORE 文字列は内部的に違う命令なのかなと予想します
アバター
さすらいの名無し 2020/1/6 13:38 ◆LWMA5UzCJb3e
DEF内からRESTOREする時も
RESTORE "@A"
でいけました。(GOSUBみたいに"0:@A"みたいにする必要がない)
RESTOREが特殊なんですかね…?
アバター
うつりきまぐれ 2020/1/6 19:32 ◆8rpaj7TJiZUt
GOTO GOSUB RESTORE にラベルをそのまま指定したときは「文字列と解釈されたラベル」ではなく単に「ラベル」として別の構文解析ルールが当てはまってるのかも?
変な言語で書くと

label = ...

expr = ( 正確には式ではなく式を構成するトークン )
 label
 string
 ...

restore =
 RESTORE expr
 RESTORE label

みたいな。


RESTORE @A+"B"

の場合 RESTORE @A の部分をみてそのままのラベルなので、後者のルールが当てはまる。その次、行頭にいきなり + 演算子が来るのでエラー。

そもそもラベルが文字列代わりに使えるようになったのは3.1.0 から。
アバター
うつりきまぐれ 2020/1/6 19:32 ◆8rpaj7TJiZUt
あきとさんと言ってること同じだった。
アバター
ツララ 2020/1/7 12:27 ◆ArUdBYOYME1V
うつりきまぐれさんの解説の方が専門用語少なめで具体的な例が書いてあって
個人的に分かりやすかったですけど。

そういえばCOPY命令で読み込むDATA文の位置をラベルで指定する時とかは
ダブルクォーテーションで囲む必要があったりするのも何故なんでしょうかね?
パイプや改行後のラベルと、命令の引数として渡すラベルとではそもそも構文的な解釈が違うのだけれど
使用頻度が高いからPRINT命令を?と略せるようにしているように
暗黙の型変換みたいな処理がされているのの抜けの可能性が微レ存…?
アバター
Na 2020/1/7 14:47 ◆QoELVrBXBQCI
>COPY命令で読み込むDATA文の位置をラベルで指定する時とかはダブルクォーテーションで囲む必要が
ヘルプにはそう書いてあるみたいですけど実際やってみたら COPY A,@1 みたいに問題なくできました。
同様にBGMSETDやSPANIMもラベルをそのまま書いて動作します。

やっぱりラベルに関してGOTO,GOSUB,RESTOREだけ特殊な処理をするみたいです。
関係あるかは分かりませんがEditモードでRESTOREやGOTOとCOPYやBGMSETDは表示色が違いますし

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -