상세 컨텐츠

본문 제목

컴파일러 만드는 중 (Blue Orange)

etc

by ryujt 2010. 9. 17. 17:24

본문

몇 일간 열심히 일하다가, 또 다시 의욕상실 ㅡ.ㅡ

자꾸 머리에 떠돌길래, 예전부터 만든다 만든다 하고 미뤄둔,
컴파일러를 만들어 버렸습니다 ㅡ.ㅡ;;
(일단 로봇 제어용 언어 형식으로 만들고 있습니다)

Lex/Yacc가 생성한 코드는 영 맘에 안들어서 아예 모든 건 순수 코딩으로 ㅡ.ㅡ;;
(일단 전체 코드가 깔끔한게 제 맘에 쏙 듭니다 ^^*)

문법도 내 맘대로 ㅋㅋ
언젠가 시간이 되면 함수, 구조체, 클래스 모두 지원하는 언어를 만들어 볼랍니다.

아래는 컴파일한 예,
쉽게 컴파일 결과를 이해하기 위해서, OP Code도 제가 직접 만들어 버렸습니다.
x86 또는 플래시를 대상으로 고민을 했지만, 역시 일단 내 맘대로 만드는게 편해서.
OP Code가 전혀 일반적이지 않습니다 ㅋㅋ

추후, 플래시나 안드로이드 플랫폼에 올려보고 싶네요 ^^*
아래는 종태기가 새로 만들고 있는 언어, Blue Orange의 샘플 코드

[Code delphi]program My_First_Program;

repeat
  Go 5;
  Turn Left;
  Go 5;
for 4 times;

end.[/Code]

Repeat Something for n times;  
// 이것 때문에 for 루프문의 표현이 달라졌음.
// 그래도 읽기에 편안한 구조라 일단 이렇게 결정.  times도 단수일 경우 time으로 할까도 고민 ㅡ.ㅡ;;

컴파일러를 통해서 생성된 어셈코드
(Left, Right, Around는 일단 내장 상수로 취급하였음)

[Code delphi]// Program My_First_Program

Const Left 0
Const Right 1
Const Around 2

// Repeat Start
Number Count18
Move 4 to Count18
@RepeatStart18
IfNot Count18 Jump @RepeatEnd18
Dec Count18
Call Go 5
Call Turn Left
Call Go 5
Jump @RepeatStart18
@RepeatEnd18[/Code]

'etc' 카테고리의 다른 글

시스템 함수  (0) 2010.10.13
Blue Orange OP Code  (0) 2010.10.13
텍스트 기반 Network Programming 설계  (1) 2010.05.24
About me  (0) 2010.05.23
SVN Global Ignore Pattern  (0) 2010.03.29

관련글 더보기