ab.com コミュニティ
https://www.activebasic.com/forum/

変数に日本語を使用出来る様にして欲しい
https://www.activebasic.com/forum/viewtopic.php?t=2097
ページ 11

作成者:  hc [ 2007年11月25日(日) 06:37 ]
記事の件名:  変数に日本語を使用出来る様にして欲しい

JavaScript,vba,HSP等は変数に日本語が使用出来るので、変数に対するコメントを記述する必要がなく重宝してます。
是非ABにも宜しくお願いいたします。

作成者:  konisi [ 2007年11月25日(日) 10:34 ]
記事の件名: 

日本語変数の件、賛成です。


漢字も使えると便利だと思いますが、
幽霊文字や外国の文字・記号・数字等の全角文字の扱いはどうしましょう?
変数名で=とか1とかは良くないと思うのですが。

作成者:  イグトランス [ 2007年11月25日(日) 15:02 ]
記事の件名: 

個人的には使う気になりませんが,使えないなんてのはただの制約でしかないと思っていますから賛成です。

----------------
以下技術的な話です。

どんな文字を許すかという基準はUnicodeを参照して明確にすればよいでしょう。

Unicodeでは各文字に対して様々な属性 (property)を付与していますが,中でも一般カテゴリ値 (General Category Values)が数字,記号,空白などといった分類を提供しています。
これは大分類と小分類の2字からなっており,例えばLu (letter, uppercase; 大文字)やSm (symbol, math; 数学記号)という具合です。
http://www.unicode.org/Public/UNIDATA/UCD.htmlから入手できるUnicodeData.txtが一覧になっています。

これを具体的に使用したものとしてC#が挙げられます。
C# 3.0言語仕様(http://msdn2.microsoft.com/en-us/vcsharp/Aa336809.aspxから入手可)の「2.4.2 Identifiers」をまとめると,次のようになっています。
  • 1文字目はLu, Ll, Lt, Lm, Lo, Nlに属す文字と下線 (U+5F)
  • 2文字目以降はそれに加えMn, Mc, Nd, Pc, Cfも使用可能
これを当てはめると次のようになります。
  • 仮名漢字は全てLoに属するので使用可能
  • =(全角, U+FF1D)はSmなので使用不可能
  • 1(全角, U+FF11)はNdなので2文字目以降に使用可能(現在の半角数字と同じ扱い)
ほか特記すべきこととして,「2.3.3 White space」で空白文字にタブなどのほか,Zsに属す文字全てを指定していることがあります。
つまり全角空白が半角空白同様に使用可能なのです。

あとは改行がCR (U+0D), LF (U+0A), CR LFの並びのほか,NL (U+85), 行区切り (U+2028), 段落区切り (U+2029)となっているところも注目点でしょうか。
そもそもABってUnicode使った文字コードのソースをコンパイルできたけって気がしますけど。

作成者:  konisi [ 2007年11月25日(日) 23:09 ]
記事の件名: 

コード:
#N88BASIC

Print "テストプログラム1"
上のソースコードの各キャラクタセットを試してみたところ、AB423では

Unicode:文法が間違っていると怒られる。
UTF-8:コンパイラが認識できない文字が含まれていると言われる。
UTF-8N:コンパイルは可能。ただし文字化けする。
EUC:コンパイルは可能。ただし文字化けする。
JIS:コンパイルは可能。ただし文字化けする。
S-JIS:正常。

という結果になりました。(改行コードはCRLFで試しました。)

(コンパイラの)パーサとスキャナをUnicode用に直して、文字をUnicodeに変換するプログラムを追記するという作業をすればなんとかなりそうな気がしますが。

ソース→[スキャナ(SJIS)]→[パーサ(SJIS)]→[コードジェネレータ]→実行ファイル

ソース(character:Unknown)→[変換]→[スキャナ(Uni)]→[パーサ(Uni)]→[コードジェネレータ]→実行ファイル

作成者:  イグトランス [ 2007年11月26日(月) 00:16 ]
記事の件名: 

実際には出力時も変換が要る場合もあります(AB5の非UNICODEモード)。
GCCが実際にそういう風に作られており,入力時と出力時の変換に用いる文字コードをそれぞれ--input-charset, --exec-charsetというオプションで指定できるようになっています。

その例のUTF-8N, EUC, JISで書いたプログラムは,コンソールやプロンプトウィンドウを使わず,ファイルに入出力するようにするとうまくいくと思います(もちろんファイルの中身は当該の文字コードになると思います)。

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/