일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- lua setup
- 엑스퍼트2주년
- Lua
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- lua interpreter
- C API
- 등록임대주택
- FILE TRANSFER
- file open
- 청량리역한양수자인192
- file read
- 엑스퍼트생일축하해
- lua for windows
- QT TCP
- TCP/IP
- 티몬삼겹살데이
- 국토교통부
- 프리미어 영상저장
- object
- 프리미어 영상변환
- QTcpServer
- 중소규모택지
- meta table
- C++ API
- file write
- 월세
- 찾다죽는줄
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- lua install
- 수도권주택공급
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#6 [lua 1.1] 개요 - Lua 내부 코드 읽어보기 본문
#루아의 렉스와 야크 코드를 정성들여 분석해놓았다.
어디사는 누구인지 모르겠지만 감사합니다.
https://navilera.github.io/categories/
-----------------------------------------------------------------------------------------------------------------------------------------------
1. LUA 1.1 버전을 다운 받는다.
2. 루아는 1.0 버전이 아니라 1.1 버전이 최초 버전이다.
루아 1.0은 정식 릴리즈가 아니라 루아 탄생 10주년 기념으로 공개한 스냅샷이라고 합니다. 그리고 소스 파일 중에 lex와 yacc 파일이 없어서 문법은 y_tab.c를 봐야 알 수 있다고 하네요. y_tab.c는 yacc가 gcc 보라고 만든 파일이지 사람이 읽으라고 만든 파일이 아니기 때문에 안보겠습니다. 물론 yyreds라는 변수에 yacc 파일에 적은 코드가 그대로 적혀 있긴 하지만 1.1과 딱히 다른점이 없으니, 그거 본다고 시작부터 진 빼기 싫거든요. 그래서 1.1부터 보기로 결정한 것입니다.
3. LUA 1.1 버전 폴더를 들어가보면 아래의 구조로 되어 있다. 그 중 핵심은 include 폴더와 src 폴더인 것 같다.
|-- include
| |-- lua.h
| |-- lualib.h
| `-- mm.h
|-- src
| |-- hash.c
| |-- hash.h
| |-- inout.c
| |-- inout.h
| |-- lex.c
| |-- Makefile
| |-- opcode.c
| |-- opcode.h
| |-- table.c
| |-- table.h
| |-- y.tab.c
| |-- y.tab.h //yacc이 생성하는 헤더.
| `-- yacc
| |-- exscript
| |-- lua.lex
| |-- lua.stx
| `-- Makefile
--> lex와 yacc 기반으로 되어있는 것을 확인할 수 있다. 최신버전인 루아 5.3은 lex와 yacc을 쓰지 않는다고 한다.
읽어볼 파일은 아래와 같다.
hash.c : 해시?
hash.h : 해시 헤더 파일
inout.c : 디버거 관련 기능을 구현한 것 같습니다. 그런데 정적 전역 변수들 선언을 보니, 아마도 함수 콜 스택 추적 정도 기능만 구현한 듯 보입니다.
inout.h : inout.c의 헤더 파일
lex.c : 토큰에 대한 정규 표현식.
opcode.c : 루아 VM(Virtual Machine)을 구현하는 핵심 부분.
opcode.h : opcode 헤더 파일
table.c : lua에서 사용하는 파일 추가, 삭제, 열기, 입출력 등을 담당?
table.h : table.c의 헤더 파일
lua.stx : 루아 언어 문법 규칙을 정의한 파일. yacc 역할 담당.
핵심이면서 가장 많은 부분 차지 하는 것 : lua.stx와 opcode.c
* 해시 : 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. 그 용도 중 하나는 해시 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용된다.
'1. 프로그래밍 > 2) LUA' 카테고리의 다른 글
#8 [LUA 1.1] lua.stx 파일 읽어보기 (0) | 2019.08.26 |
---|---|
#7 [LUA 1.1] lex.c 파일 읽어보기 (0) | 2019.08.23 |
#5. [LUA] Lua 설치하기(Lua For Windows) (0) | 2019.04.19 |
#4. [LUA] C 또는 C++ 과 Lua script연동 (0) | 2019.04.18 |
#3 Lua Tutorial ( File 열기, 쓰기 / 파일호출 / table 및 metatable) (0) | 2019.04.17 |