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

 

전 있습니다.

 

후후..

 

진짜 편합니다.

 

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

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

 

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

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

 

뭐

 

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

 

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

 

출처는 여기입니다.

 

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

> 

 

그럼...