Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl

SPVM言語仕様(ベータ 1.0以前)

SPVM言語仕様(ベータ 1.0以前)

[f:id:perlcodesample:20170905223938j:image:w240]

  1. パッケージ宣言
  2. フィールド宣言
  3. サブルーチン宣言
  4. 変数宣言

パッケージ宣言

パッケージ宣言は以下のように行います。

  package PackageName {
    
  }

「PackageName」はパッケージ名です。

パッケージ名は、大文字、小文字、数値と「::」で構成されます。パッケージ名は、大文字で始まならなければなりません。先頭が小文字のパッケージ名は禁止されています。先頭が小文字のパッケージ名は、コアのために予約されています。

パッケージ名は、アンダースコア「_」を含むことができないことに注意してください。アンダースコアは、「パッケージテンプレート」のために使用されます。

  # 適切
  Foo
  Foo2
  Foo::Bar
  Foo::Bar::Baz
  Foo::bar
  
  # 違反
  foo
  foo::Bar
  2Foo
  Foo_Bar

パッケージ宣言はファイル直下にされなければなりません。

  # 適切
  package PackageName {
    
  }
  
  # 違反
  sub foo() : int {
    package PackageName {
      
    }
  }

フィールド宣言

フィールドの宣言は次のようにします。

  has field_name : type_name;

「field_name」はフィールド名です。フィールド名は、大文字、小文字、数値とアンダースコア「_」で構成されます。フィールド名は、数値で始まってはいけません。アンダースコアは、2つ以上連続で続けることはできません。

  # 適切
  foo
  foo_bar
  foo2
  foo_bar2
  FOO
  
  # 違反
  2foo
  foo__bar

「type_name」はひとつの型です。型については「型」のセクションで詳しく解説します。いくつかの型の例を列挙します。

  byte
  short
  int
  long
  float
  double
  string
  PackageName

フィールド宣言は、パッケージ宣言の直下に置く必要があります。

  # 適切
  package PackageName {
    has field_name : type_name;
  }

  # 違反
  has field_name : type_name;
  sub foo() : int {
    has field_name : type_name
  }

サブルーチン宣言

サブルーチンの宣言は以下のように行います。

  sub sub_name(arg_name : type_name, ...) : descripter_name return_type_name {
    
  }

「sub_name」はサブルーチン名です。サブルーチン名は大文字、小文字、数字、アンダースコア「_」で構成されます。

サブルーチン名は、数字で始まってはなりません。アンダースコアは、2つ以上続けてはなりません。

  # 適切
  foo
  foo_bar
  foo2
  foo_bar2
  FOO
  
  # 違反
  2foo
  foo__bar

「arg_name」は引数名です。これは変数名と同じです。変数名については「変数宣言」の項目で説明しています。

「type_name」は型です。型については「型」の項目で説明しています。

「arg_name : type_name」は「,」を使って繰り返すことができます。引数がなくてもかまいません。最大の個数は255個です。

「descripter_name」は、デスクリプタ名です。デスクリプタはなくてもかまいません。利用できるデスクリプタは以下です。現在利用できるデスクリプタはひとつだけです。

  [名前]     [説明]
  native     このサブルーチンはネイティブです。

ネイティブサブルーチンは、「ネイティブサブルーチン」の項目で説明されています。

「return_type_name」は型あるいは「void」です。「void」は戻り値を持たないということを意味します。型については「型」の項目で説明されています。

サブルーチン宣言は、パッケージ宣言の直下に置かなければなりません。

  # 適切
  package PackageName {
    sub foo($nums : int[]) : int {
    
    }
  }
  
  # 違反
  sub foo() : double {
    sub var() : void {
      
    }
  }

変数宣言

変数宣言は以下のように行います。

  my var_name : type_name;

「var_name」は変数名です。変数名の最初の文字は「$」です。残りの文字は、大文字、小文字、数値、アンダースコア「_」で構成されます。

  # 適切
  $foo
  $FOO
  $foo2
  $foo_bar

もし、変数宣言が行われれば、宣言の後で、変数を使うことができます。

「type_name」は型です。型については、「型」の項目で解説されています。

Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング