Static Analysis for LUA 작업기 #4
복잡한 함수 말고 간단한 함수를 구현해 보았다.
현재는 심볼릭 이스큐션이란 핑계로 다 실행하고 있기 때문에
재귀호출이 있으면 무한루프를 도는 경향이 있다.

코드 형태가 미묘한건 lua_checker의 파서를 이용하고있어서이다.

하는 김에 에러메시지도 좀더 친절히 만들어 보았다.

정상적인 경우

local a = {};
a['step'] = 1;
factorial = function(k, a)
if k == 1 then
return k;
else
return k * factorial(k - a['step'], a);
end
end;
print(factorial(10, a));


실행결과 - 무식하게 다 실행하니 출력값도 보여줌 (...)

Standard output
3628800
No error or warning found.



return K 에서 대문자 오타

...
if k == 1 then
return K;
else
...


실행 결과

Standard output
UNKNOWN
Line 10:call to factorial(10.0, a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:call to factorial(k-a['step'], a)
:Line 7:Line 7 ERR : attempt to perform `*` on a non-number value (k, )


a.step 을 a.stpe라고 오타 낸 경우


...
return k * factorial(k - a['stpe'], a);
...


실행 결과 (무한 루프를 돌면서 계속 아래 에러를 보여준다)

Line 10:call to factorial(10.0, a)
:Line 7 ERR : attempt to perform `-` on a non-number value (k, a['stpe'])
Line 10:call to factorial(10.0, a)
:Line 7:call to factorial(k-a['stpe'], a)
:Line 7 ERR : attempt to perform `-` on a non-number value (k, a['stpe'])
Line 10:call to factorial(10.0, a)
:Line 7:call to factorial(k-a['stpe'], a)
:Line 7:call to factorial(k-a['stpe'], a)
:Line 7 ERR : attempt to perform `-` on a non-number value (k, a['stpe'])
...


흠 ...

아직은 돈다는게 신기하군!에 가치를 둬야 하나.
by 입큰하마 | 2011/03/08 23:01 | 프로그래밍 | 트랙백 | 덧글(1)
트랙백 주소 : http://ipkn.egloos.com/tb/4546297
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented at 2011/09/23 08:42
비공개 덧글입니다.

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >