혹시 여러분은 한글로 프로그램 작성하신적 있습니까?

 

전 있습니다.

 

후후..

 

진짜 편합니다.

 

그냥 코드를 읽으면 됩니다.

주석 필요가 거의 없습니다.

 

영어권에서는 이런 혜택을 누리고 있고

저희들은 프로그램 해석과 주석이라는 이중고에 시달리고 있죠..

 

 

그래서 루아에서 한글 변수와 함수를 쓸수 있다면 좋겠죠..

 

그래서 이번글은 이에 대한 내용입니다.

 

출처는 여기입니다.

 

http://www.gpgstudy.com/gpgiki/LuaHangulPatch

 

루아에서 한글 변수와 함수를 쓰는 방법

 

한글을 쓰기 위해서는 아주 심플한 소스 패치가 필요합니다.

 

패치 이후는 저번 글에 소개한 컴파일 방법을 취하시면 됩니다.

 

패치 대상은 llex.c 라는 파일입니다.

 

llex.c:

 

+#define ishan(c) (0xA0 < (c) && (c) < 0xFF)

:    

static int llex (LexState *ls, SemInfo *seminfo) {

:

default:

:

-        else if (isalpha(ls->current) || ls->current == '_') {

+        else if (isalpha(ls->current) || ishan(ls->current) || ls->current == '_') {

:

-          } while (isalnum(ls->current) || ls->current == '_');

+          } while (isalnum(ls->current) || ishan(ls->current) || ls->current == '_');

 

 

 

정말 간단하죠? ㅋㅋ

 

아시죠 "-" 는 해당 라인을 찾아서 제거하고 "+" 에 해당하는 부분을 추가 하라는 의미라는 것!

 

패치하시고

 

   make ansi 로 컴파일 하시면 됩니다.

 

 루아 스크립트를 명령창에서 실행한후 시험하시면 됩니다.

 

다음은 예죠..

 

 

Lua 4.1 (work4)  Copyright (C) 1994-2001 TeCGraf, PUC-Rio

> 문자열 = "한글 루아!?"

> 출력 = print

> function 덧셈(왼쪽,오른쪽)

>> return 왼쪽+오른쪽

>> end

> 출력( 문자열, 덧셈(2000,2) )

한글 루아!?     2002

> 

 

루아에서 한글 문자열을 처리하도록 처리하는 방법입니다.

 

문자열 패턴 연산자에서 한글 문자열을 처리하기 위한 것입니다.

 

l  %h 한글을 의미하는 패턴 추가

l  한글도 word 포함되게 수정

 

이런 처리가 가능하도록 하려면 lstrlib.c 를 수정하면 됩니다.

 

lstrlib.c

 

+#define ishan(c) (0xA0 < (c) && (c) < 0xFF)

 

static int match_class (int c, int cl) {

:

-    case 'w' : res = isalnum(c)  break;

+    case 'w' : res = isalnum(c) || ishan(c); break;

+    case 'h' : res = ishan(c);   break;

:

}

 

 

 

다음 처럼 합니다.

 

단 gsub 함수는 make ansi 로 컴파일 하면 처리되지 않습니다.

 

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio

> s = "ABC 가나다 123"

> print(gsub(s, "(%w+)", "[%1]"))

[ABC] [가나다] [123]    3

> print(gsub(s, "(%W+)", "[%1]"))

ABC[ ]가나다[ ]123      2

> print(gsub(s, "(%h+)", "[%1]"))

ABC [가나다] 123        1

> print(gsub(s, "(%H+)", "[%1]"))

[ABC ]가나다[ 123]      2

> 

 

그럼...