일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 육전국밥 #강남역맛집 #24시간맛집 #소고기국밥 #육전 #모둠전 #해물파전 #강남한식 #혼밥맛집 #강남역국밥
- C API
- 국토교통부
- lua interpreter
- 중소규모택지
- QTcpServer
- 수도권주택공급
- 찾다죽는줄
- 등록임대주택
- 엑스퍼트생일축하해
- 강남역맛집 #육전국밥강남역점 #강남국밥맛집 #서울국밥추천 #강남육전맛집 #강남혼밥 #강남역점심 #서울국밥집 #강남수육국밥 #육전정식
- file write
- lua for windows
- object
- 월세
- lua install
- TCP/IP
- C++ API
- 전동포 #송파구전기자전거 #전동킥보드수리 #모토벨로대리점 #전기자전거판매 #전동스쿠터수리 #배터리수리 #전기자전거수리 #송파구전동킥보드 #전동이동수단
- FILE TRANSFER
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- Lua
- 엑스퍼트2주년
- 순남시래기 #교대맛집 #교대역맛집 #한식맛집 #시래기국 #서울맛집 #가성비맛집 #건강한식단 #셀프반찬 #직장인맛집
- 티몬삼겹살데이
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- lua setup
- 편편집 #강남역맛집 #강남샤브샤브 #강남무한리필 #편백찜맛집 #월남쌈맛집 #샤브샤브맛집 #가성비맛집 #강남회식 #강남데이트
- QT TCP
- #서초구맛집 #교대역된장찌개 #옥된장교대점 #서초된장맛집 #교대직장인맛집 #된장찌개전문점 #서울된장정식 #혼밥맛집 #건강한한끼 #교대점심맛집
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#6 [lua 1.1] 개요 - Lua 내부 코드 읽어보기 본문
#루아의 렉스와 야크 코드를 정성들여 분석해놓았다.
어디사는 누구인지 모르겠지만 감사합니다.
https://navilera.github.io/categories/
Posts by Category
4 분 소요 Tree.h Tree.h, Tree.c 파일은 루아 2.1에서 새로 생긴 파일입니다. 루아 1.1에서 그냥 표준 라이브러리 호출로 처리했던 동적 메모리 관리를 트리로 대체한 것으로 보입니다. 검색을 빠르게 하려는 요량으로 보이는데, 코드를 읽으면서 어디에서 트리를 쓰는지도 같이 추...
navilera.github.io
-----------------------------------------------------------------------------------------------------------------------------------------------
1. LUA 1.1 버전을 다운 받는다.
Lua: download area
Download area This repository contains the source code and the reference manuals for all released versions of Lua. If you want to build early versions of Lua using modern compilers, get the lua-all package. If you have arrived here by accident, start here.
www.lua.org

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 |