Skip to content

Instantly share code, notes, and snippets.

@na2co3-ftw
Last active August 28, 2018 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save na2co3-ftw/1c172161846e3e647cecc28e17cfe99b to your computer and use it in GitHub Desktop.
Save na2co3-ftw/1c172161846e3e647cecc28e17cfe99b to your computer and use it in GitHub Desktop.

2003f Editorのリポジトリ内 に移転しました。

2003f Editor 警告仕様

2003f Editor では、2003lk、tinka、centそれぞれの本家実装で、エラーにならないものは、同様にエラーにしないようにしている。

エラーにならないものの、推奨しない書きかたには警告を表示するようにした。ここでは実装した警告を挙げる

2003lk

  • malkrzfi の直後にない時
  • 命令よりも先に、 'c'i または 'i'c のどちらかが明示的に指定されていない時
  • l'nll または xok によるラベル定義で、ラベル名がキーワード名(kak 含)と重複する時
  • l' の直前が命令ではない('c'i 等の)時
  • nll の直後が命令ではない時
  • 定義されたラベルが、一度も使用されていない時
  • inj f0 f1 f1@ や同様の lat latsna での未定義動作を書いた時
  • (未実装) kue されたラベルが、他ファイルで一度も使用されていない時

tinka

  • 変数宣言で、変数名が数字の時: anax 1
  • 変数宣言で、変数名が kuexok または fi の時: anax fi
  • 変数宣言で、変数名が /[FRVXa-z0-9'_-]+/ に一致しない時: anax あ
  • 変数宣言で、配列のサイズが +- で始まる時: anax p@+10
  • 変数宣言で、@が2つ以上含まれる時: anax p@10@2 (p@10 として解釈される)
  • 変数宣言が、関数の中で先頭ではない時
  • 変数名が重複している時: anax p anax p
  • 配列として宣言された変数を通常の変数として使用した時
  • 通常の変数として宣言されたものを配列として使用した時
  • xok で指定したラベル名が数字で始まる時、キーワードと重複する時、または /^(fi|fal(-rinyv)?|dosnud)\d+$/ に一致する時: xok krz
  • 関数名が、キーワードと重複する時、または /^(fi|fal(-rinyv)?|dosnud)\d+$/ に一致する時: cersva krz
  • 関数の引数名がキーワードと重複する時: cersva p krz
  • _fasal 関数が引数を持つ時: cersva _fasal p
  • 関数の引数名が重複している時: cersva p F F
  • 関数呼出や xok で内部ラベル(dosnud1 など)を使用した時
  • 関数呼出で与える引数の数が関数宣言と一致しない時
  • (未実装) 値を返さない関数の返り値を使用しようとした時

重要度の低いもの

  • 宣言された変数または引数が、一度も使用されていない時
  • 宣言された関数または xok で指定したラベルが、一度も使用されていない時
  • rinyvsituv の間に何もない時: rinyv situv
  • (未実装) kue されたラベルが、他ファイルで一度も使用されていない時

本家のエラー処理が中途半端なもの

  • 変数宣言で、配列のサイズが数字ではない時: anax p@F (本家ではjava.lang.NumberFormatExceptionになる)
  • 宣言されていない変数を使用した時 (本家ではkotlin.KotlinNullPointerExceptionになる)
  • 関数宣言または xok で指定されたラベルが、内部ラベルと重複した時 (本家では2003lkパーサがラベル重複定義エラーを吐く)

cent

C#実装のみ参照した。Rust実装は未確認

  • サブルーチン名が krzqkRzqachqroftq または /[^\sFRVXa-z0-9,.?!':+|=$\\@&#"()《》_-]/ を含む時
  • xok で指定された関数名が krzqkRzqachq または roftq である時
  • fiifceciooicecfallaf 内でサブルーチンまたは xok を宣言した時
  • サブルーチン名と xok で指定された関数名が重複した時

重要度の低いもの

  • サブルーチンの中が空の時: <p>
  • fiif または ololifceciooicecfallaf の間に何もない時
  • 定義されたサブルーチンまたは xok で指定した関数が、一度も使用されていない時

ata2003lk

  • malkrzfi の直後にない時
  • l'nll または xok によるラベル定義で、ラベル名がキーワード名(kak 含、 'i'c'c'i 含まない)または /^(lar(-sit)?)\d+$/ を含む時
  • l' の直前が命令ではない('c'i 等の)時
  • nll の直後が命令ではない時
  • larral の対応関係が一致しない時、またはネストされた時 (ラベル重複定義やラベル未定義を引き起す場合はエラー、そうでない場合は警告)
  • 内部ラベル(lar1 など)を使用した時
  • 定義されたラベルが、一度も使用されていない時
  • inj f0 f1 f1@ や同様の lat latsna での未定義動作を書いた時
  • (未実装) kue されたラベルが、他ファイルで一度も使用されていない時
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment