スクリプト言語まとん : 定数定義


ブログ
言語仕様

定数定義
識別子定義
演算定義
宣言定義
構文定義
コメント定義

Back
Home
 ここにまとんにおける定数を定義します。
 定数には次に示すような階層が存在します。これらの定数はそれぞれ適切な型を持ちます。

定数
数値

整数
整数を表す定数で、通常は integer 型に配置されます。
integer 型は符号付き32bit値です。

8進数
0 から始まり、 0 から 7 までの8進数で記述される数値。
10進数
単に 0 であるか、0 でない値で始まり 0 から 9 までの 10 進数で記述される数値。
16進数
0x もしくは 0X で始まり、大文字小文字に関係なく 0 から 9 までの数値と A から F までのアルファベットで記述される 16 進数値。

浮動小数点数
浮動小数点値を表す定数です。通常は real 型に配置されます。
real 型は符号付き32bit値です。

文字列
文字列を表す定数。通常は string 型に配置されます。


 まとんは _ (アンダースコア)による数値書式の整理を許します。
 _ (アンダースコア)は数値としては無視され、何にも解釈されません。

10進数
0       // 0 のみの値。
12321   // 10進数定数
12_321  // 3 桁で書式整理。12321 に等しい
1_2345  // 4 桁で書式整理。12345 に等しい。
8進数
0        // これは10進数
037      // 31 に等しい。
0_3      // 03 に等しい。
051_272  // 051272 を3桁で書式整理。
16進数
0              // これは10進数
0x             // エラー。0x には必ず一つ以上の16進数が続かなくてはならない。
0x5b           // 91 に等しい。
0X5B           // 上に同じ
0x5B           // 上に同じ
0X5b           // 上に同じ
0x_3           // 0x3 と等しい。
0x_            // エラー。数値が存在しない。
0x_FF_8B       // 0xFF8B を2桁で書式整理。
0x_FF_8B_52_16 // 0xFF8B5216 と同じ。

EBNF 定義

定数
:=  数値定数
|  文字列定数
;
数値定数
:=  整数定数
|  浮動小数点定数
;
整数定数
:=  10進数定数
|  8進数定数
|  16進数定数
;
10進数定数
:=  ( 10進数値 - '0' ) ( 10進数値 | '_' )*
|  '0'
;
8進数定数
:=  '0' '_'? 8進数 ( 8進数 | '_' ) *
;
16進数定数
:= ( "0x" | "0X" ) '_'? 16進数 ( 16進数 | '_' )*
;
浮動小数点定数
:=  10進数 ( 10進数 | '_' )* '.' ( 10進数 | '_' )+ ( 'e' | 'E' ) 符号? ( 10進数 | '_' )+
|  10進数? ( 10進数 | '_' )* '.' ( 10進数 | '_' )+ ( ( 'e' | 'E' ) 符号? ( 10進数 | '_' )+ )?
|  10進数 ( 10進数 | '_' )* '.' ( 10進数 | '_' )* ( ( 'e' | 'E' ) 符号? ( 10進数 | '_' )+ )?
;
文字列定数
:=  '"' ( "\\\"" | ( 任意文字 - '"' ) )* '"'
;