
혹시 여러분은 한글로 프로그램 작성하신적 있습니까?
전 있습니다.
후후..
진짜 편합니다.
그냥 코드를 읽으면 됩니다.
주석 필요가 거의 없습니다.
영어권에서는 이런 혜택을 누리고 있고
저희들은 프로그램 해석과 주석이라는 이중고에 시달리고 있죠..
뭐
그래서 루아에서 한글 변수와 함수를 쓸수 있다면 좋겠죠..
그래서 이번글은 이에 대한 내용입니다.
출처는 여기입니다.
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
>