lua script의 기본 문법
Lua Script의 기본 문법 중 변수 생성 규칙은 아래와 같다.
1. 숫자로 시작하지 않는 영문자, 숫자, 밑줄의 조합으로 생성할 수 있으나 Lua Script에서 사용하는 예약어 (and, break, do, else, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while 등) 는 피해야 한다
2. Lua Script는 대소문자를 구분하며, and는 예약어 이지만 And, AND 등은 서로 다른 식별자이다.
Lua Script의 주석 처리는 한 줄 주석은 "--"으로 시작하여 EOL에서 끝나며, 블록 주석은 "--[[" 으로 시작하여 “]]”에서 끝난다.
Lua Script의 변수는 적용 영역에 따라 지역변수와 전역변수를 가지며, 지역변수는 local로 변수 앞에 선언해 주거나 제어문 안에서 사용된 변수에 해당하고, 전역변수는 어디에서는 호출 가능한 변수이다. 아래 표는 Lua Script에서 사용되는 자료형을 정리한 것이다.
자료형 |
설명 |
예시 |
nil |
무(無)의 값을 갖는 자료형이다. 논리연산에서의 nil은 거짓이고, 전역변수 및 테이블 키에서의 nil은 전역변수 및 테이블에서의 키는 버려진다. |
a=nil if a then --거짓이므로 str = "I have many friends." else str = "I have few friends." --실행. end |
boolean |
true와 false값 만을 갖는다. 0, 1 과 같이 수치로 변환되지 않는다. |
a = true or false |
number |
double형 수치이다. 정수나 실수를 구분하지 않는다 |
a = 4 b = 23.0 c = 2.3e-1 d = 2.3E5 |
string |
"또는 ' 으로 감싼다. 긴 문자열은 [[...]]을 사용하다. string은 편집이 되지 않으며 오로지 새로운 문자열을 생성한다. string은 보조 라이브러리를 가지고 있다. |
str = "white" varName = "Rect1" value = 20 str = string.format("%s = %d", varName,value) str = string.lower(varName) |
coroutine |
동시에 어떤 일을 수행시킬 때 사용한다. (thread) |
co = coroutine.create (function () for i=1,10 do print("co", i) coroutine.yield() end end) coroutine.resume(co) coroutine.status(co) |
userdata |
Lua에서 배열을 표시하는 방법으로 Lua에서 정의되지 않은 raw 메모리를 생성한다. |
void *lua_newuserdata (lua_State *L, size_t size)를 사용한다. static int newarray (lua_State *L) { int n = luaL_checkint(L, 1); size_t nbytes = sizeof(NumArray) + (n - 1)*sizeof(double); NumArray *a = (NumArray *)lua_newuserdata(L, nbytes); a->size = n; return 1; /* new userdatum is already on the stack */ } |
table |
Lua의 테이블은 복합 자료형이면서도 중요한 역활을 한다. key-value가 아닌 배열이나 객체 프로그래밍을 할 때 필요하기 때문이다. 전체적으로 {}로 감싸며 key는 []로 감싼 형태이다. 배열도 테이블이다. key-value형식이 아닌 우리가 흔히 하는 요소가 한 줄로 배치된 모습이다. 배열의 처음 시작 인덱스는 1부터 시작하며 0인덱스를 사용하려면 사용자가 직접 만들어 주어야 한다. |
COLOR = {Red = "rgb(255,0,0)",Green = "rgb(0,255,0)",Yellow = "rgb(0,0,255)"} T = {x = 10, y=20 ,z=30, func = function () return a end} T2={10,20,30} COLOR.Red --> rgb(255,0,0) COLOR["Red"] --> rgb(255,0,0) T["x"] -->10 T2[1] -->10 |
Lua Script에서는 다른 Script 언어와 같이 치환, 산술, 관계, 논리 연산자 등과 같은 연산자를 제공하며, 아래 표는 Lua Script에서 사용되는 연산자에 대해 설명한 것이다.
Lua Script 연산자
연산자 |
연산 기호 |
예시 |
치환 연산자 |
= |
A = 10 |
산술 연산자 |
+, -, *, /, %, ^(자승) |
A = 10 B = A*10 |
관계 연산자 |
>, >=, == , <=, <, ~=(같지않음) |
if(A>B) |
논리 연산자 |
and, or, not |
if(A>B and B<5) |
기타 연산자 |
..(문자열 연결),#(문자열 혹은 테이블 등의 크기 반환) |
str1 = "ab " str2 = "efgh" str3 = str1..str2 str3 --> "ab efgc" COLOR = {Red = "rgb(255,0,0)",Green = "rgb(0,255,0)",Yellow = "rgb(0,0,255)"} A = #COLOR A --> 3 |
아래 표는 Lua Script 연산자의 우선 순위를 나타낸 것이다.
Lua Script 연산자 우선순위
연산자 |
비고 |
^ |
오른쪽 우선 연산자 |
-, not, # |
‘-’는 단항연산자(부호)를 의미 |
*, /, % |
‘-’는 이항연산자(빼기 연산)를 의미 |
+, - |
|
.. |
오른쪽 우선 연산자 |
>, <, >=, <=, ==, ~= |
|
and |
|
or |
|
Lua Script에서는 다른 Script 언어와 같이 if, for, while 등과 같은 제어문을 제공하며, 아래 표는 Lua Script에서 사용되는 제어문을 정리한 것이다.
Lua Script 제어문
제어문 |
설명 |
예시 |
if |
조건부 실행을 위한 if문은 기본구조는 "if 조건 then 실행문 end"의 구조이다. |
- if 조건 then statement elseif 조건 then statement else statement end |
switch |
Lua Script에는 switch 문이 없으므로 switch문 대신에 연속 비교문 |
if 조건1 then 실행문 elseif 조건2 then 실행문 elseif 조건3 then 실행문 elseif 조건4 then 실행문 .elseif 조건n then 실행문 else 실행문 end |
While |
조건이 참이면 무한 반복을 하는 while 문은 C나 C++ 처럼 먼저 조건을 검사하고 조건이 참이면 do 에서 end까지의 실행 문을 실행한다. 조건이 거짓이 되거나 break 문에 의 탈출할 수 있다. |
while 조건 do statement end |
repeat, until |
조건이 참이 될 때까지 반복해서 실행하는 repeat 문은 repeat에서 until까지 조건이 거짓이면 무한 반복 실행한다. while 이나 for문과는 다르게 repeat에서 until까지 무조건 한번은 실행한다. C나 C++ 에서 "do 실행문 while(조건)"과 유사하다. 조건이 참이 되거나 break 문에 의해 탈 출할 수 있다. |
repeat statement until 조건 |
for |
for문은 수치 for 문과 일반 for 문의 두 가지 사용방법으로 사용하며 수치 for 문은 시작조건에서 종료조건이 될 때까지 step 만큼씩 더하면서 do 에서 end까지 실행한다. 제어변수는 반복문 안에서만 사용가능하며 반복문을 벗어나면 인식되지 않는다. break에 의해 탈출 할 수 있다. 일반 for 문은 반복자함수에서 반환된 모든 값을 실행한다. 배열의 값을 모두 실행하기 위해서 반복자 함수 ipairs 가 제공되고 반복될 때 마다 색인과 값을 얻는다. "for i, v in ipairs(a) do 실행문 end"에서 a는 배열이름 이고 i는 색인, v는 값이다. |
for 시작조건, 종료조건, step do statement end
for 반복자 do statement end |
break |
while, for, repeat 문을 탈출하는데 사용한다. |
for 시작조건, 종료조건, step do statement break end |
return |
값을 되돌리거나 함수를 종료할 때 사용한다. |
for 시작조건, 종료조건, step do statement return end |
'enuSpace Reference > enuSpace & lua script' 카테고리의 다른 글
lua script와 enuSpace를 이용한 로직(logic) 심볼 만들기 (0) | 2016.05.31 |
---|---|
enuSpace 편집기 스크립트 사용자 함수 호출 (0) | 2016.01.14 |
enuSpace HMI 편집기를 이용한 동적 디스플레이 기능 (0) | 2016.01.14 |
enuSpace 그래픽 편집기와 루아 스크립트 (0) | 2016.01.13 |
enuSpace 와 lua script language (0) | 2016.01.11 |