構文定義の第一段階もいよいよ終わりが見えてきました。今回は識別子です。識別子とは、変数、関数、クラスや構造体などの型名など、利用者(プログラマ)がソースコード上で命名した存在のことです。ここでは、どのような文字の並びが識別子として有効かという話になります。

識別子
識別子英字 識別子文字* (型宣言文字 識別子文字*)?

識別子英字
‘_’ | 英大文字 | 英小文字
識別子文字
識別子英字 | 十進数字
型宣言文字
‘%’ | ‘&’ | ‘!’ | ‘#’ | ‘$’

英大文字と英小文字は、それぞれ’A’から’Z’と’a’から’z’までです。長いので省略します。

ヘルプセンターの記述どおりですが、現在のABコンパイラでは、型宣言文字として使われる記号が識別子の途中にあっても通してくれます。しかし、a%b&のように複数の型宣言文字があるとエラーになりました。

また、型宣言文字を先頭に置くこともだめでした。正確には、宣言はできるが、式の中でエラーとなってしまいました。

#prompt
Dim $ = "hello"
Print $

ほかにも総じてDimステートメントは甘いようです。式の中で使用しなければ次のような変数宣言も受け入れてしまいます。

Dim a%&!#$ As Long
Dim {} = "[]"

ほかは甘くありませんでした。次のコードでは、Dim以外はエラーとなります。ABで構文上使われていない適当な記号として@を選びましたが、そういえばVBでは@が何かの型に対応する型宣言文字だったような気がします。

Dim v@

Function f@()
End Function

Sub s@
End Sub

Macro m@
End Macro

Type t@
End Type

TypeDef td@ = Long

Class c@
End Class

ところで、時代の流れとしては「Dim い」とUnicode文字が使えるようになるべきではないでしょうか。どうせ私は使いませんし、他の方も滅多なことでは使われないでしょうけど。

スポンサード リンク

この記事のカテゴリ