나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

pg어

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (6/5)...

    2014.03.21 by ∫2tdt=t²+c

  • PGLight 배포파일

    2013.10.11 by ∫2tdt=t²+c

  • 두둥! (PGLight 실행기) PGLRun

    2013.07.13 by ∫2tdt=t²+c

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (5/5)

    2013.07.06 by ∫2tdt=t²+c

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (4/5)

    2013.06.24 by ∫2tdt=t²+c

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (3/5)

    2013.06.17 by ∫2tdt=t²+c

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (2/5)

    2013.06.15 by ∫2tdt=t²+c

  • 5일만에 뚝딱 스크립트 언어 만들기 PGLight (1/5)

    2013.06.14 by ∫2tdt=t²+c

5일만에 뚝딱 스크립트 언어 만들기 PGLight (6/5)...

생각해보니, 추상문법트리에서 실제 바이트 코드를 생성하는 부분은 글을 안 썼었군요... 왜 다 끝냈다고 착각하고 있었지... 짬나는대로 정리해서 올리도록 하겠습니다~ㅠㅠ

프로그래밍/PG어 2014. 3. 21. 04:40

PGLight 배포파일

PGLight.dll PGLight.lib PGLAPI.h 정리해서 사용할 수 있게끔 올려놓는다는걸 깜박하고 있었네요.PGLight의 DLL과 헤더 파일입니다. PGLight 라이브러리를 이용하면 C/C 로 개발된 프로그램에서 PG어 코드를 불러와서 수행하고, 결과를 얻어내는 일을 할 수 있습니다. API함수에 대한 레퍼런스는 여기에서 확인하실 수 있습니다.다음 예제는 간단한 PG어 인터프리터 프로그램입니다. 커맨드라인이나 프로그램으로 입력된 PG어 코드 파일을 컴파일하고, 이를 실행합니다. #include "PGLAPI.h" #pragma comment(lib, "PGLight.lib") int _tmain(int argc, _TCHAR* argv[]) { locale::global(locale("")..

프로그래밍/PG어 2013. 10. 11. 01:17

두둥! (PGLight 실행기) PGLRun

드디어 PGLight 실행기를 공개합니다. 두둥... (사실 그렇게 쓸만한건지는 모르겠고 자기만족을 위한게 99%입니다)예제로 돌릴 코드는 /* Example1 : Hello World */ print("\nEx1 : Hello World\n"); print("Hello World\n"); /* Example2 : Inner function and closure */ print("\nEx2 : Inner function and closure\n"); function test() { function idt(x) { return x; } var a = 1; function inner() { a = a 1; print("a: ", idt(a), "\n"); } function printer() { print(..

프로그래밍/PG어 2013. 7. 13. 16:38

5일만에 뚝딱 스크립트 언어 만들기 PGLight (5/5)

저번에는 가상 머신을 설계하는 작업을 했습니다. 이번에는 가상머신의 명령어셋을 통해 어떻게 PGLight 코드가 실행되는지를 살펴보고, 코드 생성부분을 만들어볼거에요. 먼저 크고 아름다운 우리의 PGLight 예제 코드를 볼게요. Print("Hello World!"); Print(10 + 11 + 12); var foo = 10; foo = foo * 2; Print(foo); 매우 단순한 코드입니다. 먼저 첫줄의 작업은 어떻게 실행되는지 살펴봅시다.Print("Hello World!"); 이 문장은 단순히 함수를 호출하고 있네요. 함수 호출은 함수 객체를 스택에 넣고, 나머지 인수들을 차례로 스택에 넣은뒤, CALL 명령어를 호출함으로써 이루어집니다. PUSH (Print 객체의 주소) ; PUSH ..

프로그래밍/PG어 2013. 7. 6. 12:32

5일만에 뚝딱 스크립트 언어 만들기 PGLight (4/5)

짠, 저번에 파싱을 통해서 추상언어트리를 만드는걸 했구요, 이제는 가상머신을 구현해볼 차례입니다. 말이 거창하게 가상머신인데, 알고보면 간단한 놈이에요. 명령어를 받아들여서, 해석하고, 그에 따라 적당한 행동을 하면 됩니다. (CPU의 작동원리랑 거의 비슷해요!) 다만 실제로 구현할때 까다로운 부분은 메모리를 관리하는 겁니다. 가비지 컬렉션을 구현해야하니까요. 근데 그런거 없고 그냥 닥치고 shared_ptr로도 어느정도 메모리 관리를 할 수 있어요. PGLight가 채택한 명령어 체계는 스택기반의 0주소 명령어에요. 스택기반의 명령어 체계는 트리를 후위순회(post order)하면 쉽게 얻어질 수 있고 피연산자의 주소를 계산하는 일이 없어서 코드 생성작업이 간단하기 때문이죠. 일단 스택에 보관될 자료타..

프로그래밍/PG어 2013. 6. 24. 02:45

5일만에 뚝딱 스크립트 언어 만들기 PGLight (3/5)

어 벌써 3번째 글인데 아직 진도가 파싱밖에 못나가서 조금 당황스럽네요. 이거 길어질지도... 저번에 추상문법트리 구조체를 짜는것까지 했습니다. 이제 본격적으로 파서를 짜면 되는데요, 파서 짜는건 정말로 간단합니다. 1일차에서 짰던 BNF를 일부만 가지고 올게요. ::= * ::= | ::= "if" "(" ")" "{" * "}" ("else" "if" "(" ")" "{" * "}")* ("else" "{" * "}")? ::= "while" "(" ")" "{" * "}" ("done" "{" * "}")? ("else" "{" * "}")? 전체 문법은 수 십개의 규칙으로 이루어질텐데요, 이 각각의 규칙은 하나의 함수로 바뀌게 됩니다. 그리고 제일 꼭대기에 있는 규칙에서부터 차례로 확장해 나가며 ..

프로그래밍/PG어 2013. 6. 17. 21:29

5일만에 뚝딱 스크립트 언어 만들기 PGLight (2/5)

저번에 PGLight언어 문법를 BNF스타일로 정리했습니다. 이제 파싱하는 코드를 짤 차례인데요, 실은 저번에 제대로 정리하지 않고 넘어간게 있었습니다. 원래 BNF로 문법을 정리할때 말단 노드들이 어떻게 정의되는지도 명확히 해놔야 파싱 코드 작성할 때 용이합니다만, 그런거 없다! 하고 넘어왔었죠. 저번 BNF 표기법에서 어물쩍 넘어간 와 이 어떤 놈인지를 명확하게 하고 갑시다. 는 말그대로 식별자가 될만한 놈들인데, 대게의 언어에서는 특수기호가 아닌 문자열로 구성됩니다. 정규표현식으로 쓰자면 [A-Za-z][A-Za-z0-9]* 요런식으로 되겠습니다. 근데 PGLight는 소스에서부터 유니코드를 지원하기로 했기때문에, 식별자에도 특수문자를 제외한 모든 유니코드문자를 허용하기로 했는데... 음 정규표현식..

프로그래밍/PG어 2013. 6. 15. 20:19

5일만에 뚝딱 스크립트 언어 만들기 PGLight (1/5)

오랜만에 PG어 관련해서 글을 쓰네요.몇년전에 컴파일러나 파싱 이론 같은거 아무것도 모를때 그냥 왠지 언어 새로 만드는게 그렇게 멋있어 보여서 밑천도 없이 달려들엇던게 기억이 납니다. 언어 이름은 간지나게 PG어. 왜 PG어인지는... 예전에 PG어 컴파일러 비스무리한거까지 만들고 구현체도 있긴 있었습니다만, 제가 원하던 이상적인 언어 모습이 아니라서 그냥 버려버렸습니다. 그런데 갑자기 포니게임을 개발하던 도중, 엔진에서 사용할 스크립트언어가 필요하단 것을 깨닫고 PG어를 경량화시킨 PGLight를 개발하게 됐어요. 원래는 Lua를 스크립트 언어로 사용할 예정이었는데 다음과 같은 문제점 때문에 Lua를 버리고 자체개발하게 되었습니다. 1. 이해할수 없는 가비지 컬렉션 : 버그인지 몰라도 함수가 자주 호출..

프로그래밍/PG어 2013. 6. 14. 02:04

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

라틴어 정보조직론 kiwi 한국고대경제와사회 우리역사바로알기대회 자연언어처리 pg어 영어구조론 악보 리듬게임 BigFloat c++ 텍스트 마이닝 Direct3D 문헌정보통계 php python NLP 포니게임 토픽 모델링

방문자

오늘
어제
전체

페이징

이전
1
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바