1. ホーム
  2. スクリプト・コラム
  3. ルア

Lua プログラミングの基本的な構文

2022-02-11 12:14:05

 Luaはとても簡単に学べるので、さっそく最初のLuaプログラムを作ってみましょう。
最初のLuaプログラム
インタラクションモードのプログラミング。

Luaにはインタラクティブモードモードというモードがあります。このモードでは、次から次へとコマンドを打ち込み、すぐに結果を得ることができます。ここで使用するシェルは、lua-i、または単にluaのコマンドが呼び出されるだけのものを使用します。このモードになったら、Enterキーを押すと、以下のようにインタラクティブモードが開始されます。

$ lua -i 
$ Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
quit to end; cd, dir and edit also available



次のような記述で、好きなものを印刷することができます。

エンターキーを押すと、以下のように出力されます。

コピーコード コードは以下の通りです。
'test'

デフォルトモードのプログラミング。

インタプリタを呼び出すファイルは、引数lua filenameで実行を開始し、スクリプトが終了するまで実行を続けます。スクリプトが完了すると、インタープリタはアクティブではなくなります。

簡単なLuaプログラムを書いてみましょう。Luaのファイルはすべて拡張子が.luaになりますので、以下のコードをtest.luaファイルに記述してください。

コピーコード コードは以下の通りです。

print("test")[code]

Assuming, that the LUA environment is set up correctly, let's run the program, using the following command.

[code]
$ lua test.lua


次のような出力が得られます。

コピーコード コードは以下の通りです。

test

Luaプログラムを実行する別の方法を試してみましょう。以下は、修正したtest.luaファイルです。

コピーコード コードは以下の通りです。

#! /usr/local/bin/lua

print("test")


ここでは、/usr/local/binディレクトリにLuaインタプリタがインストールされているものと仮定します。最初の行が#記号で始まっている場合は、インタープリターによって無視されます。では、以下のようにプログラムを実行してみてください。

コピーコード コードは以下の通りです。

$ chmod a+rx test.lua
$. /test.lua

を実行すると、次のような出力が得られます。

コピーコード コードは以下の通りです。

test

それでは、Luaプログラムにおける基本的な構造を見てみましょう。これで、Luaプログラミング言語の基本的な構成要素を簡単に理解することができます。
Lua トークン

Luaのプログラムは、さまざまなトークンによって構成されています。トークンには、キーワード、識別子、定数、文字列リテラル、シンボルのいずれかが含まれます。例えば、以下のLua文は、3つのトークンを含んでいます。

コピーコード コードは以下の通りです。

io.write("Hello world, from ",_VERSION,"! \n")

個々のトークンは

コピーコード コードは以下の通りです。

io.write
(
"Hello world, from ",_VERSION,"! \n"
)

備考

コメントは、Luaのプログラムにおけるヘルパーテキストのようなもので、解釈上は無視されます。以下のように、-[[終端と文字]]で始まります。

コピーコード コードは以下の通りです。

--[[my first program in Lua --]]

識別子

Luaの識別子は、変数、関数、その他ユーザー定義項目の名前を特定するために使用されます。識別子は、A〜Zまたはa〜zまたはunderscore_で始まり、0以上の文字、アンダースコア、数字(0?9)が続きます。

Luaでは、@、$、%などの識別子中の句読点は使用できません。Luaは大文字と小文字を区別するプログラミング言語です。したがって、Luaでは、manpowerとmanpowerは異なる識別子となります。以下は、許容される識別子の例です。

コピーコード コードは以下の通りです。

mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal

キーワード

Luaで予約されている単語を以下に列挙します。これらの予約語は、定数や変数、その他の識別子として使用することはできません。
nil、not、or、repeat、return、then、true、until、while。

 Luaの空白文字

が空白だけを含む場合、空白行と呼ばれ、Luaはこれを完全に無視します。

空白とは、Luaでは、スペース、タブ、改行、コメントを表す言葉です。空白は他の文の一部を区切り、解釈はintなどの文の要素がどこで終わり、次の要素が始まるかを判断できるようにします。したがって、次のようなステートメントでは

コピーコード コードは以下の通りです。

local age

インタープリタでは、localとageの間に少なくとも1文字の空白文字(通常はスペース)を入れて、区別できるようにしておく必要があります。一方、次のような文は

コピーコード コードは以下の通りです。

fruit = apples + oranges --get the total fruit

フルーツと=、=とリンゴの間など、空白文字が必要ですが、可読性を高めるために空白を入れるのは自由です。