고급 컴파일러 문제 풀이, 파싱 테이블, LL 파서 4.9 다음 『파서 문법』을 생각해보시오 lexp ⟶ atom | listatom ⟶ number | identifierlist ⟶ (lex-seq)lexp-seq ⟶ lexp, lexp-seq | lexp a. 이 문법에 대한 좌측 인수 분해한 결과의 파서 문법을 구하시오. lexp ⟶ atom | listatom ⟶ number | identifierlist ⟶ (lexp-seq)lexp-seq ⟶ lexp lexp-seq'lexp-seq' ⟶ , lexp-seq | ε b. 결과 문법의 비단말기호에 대한 First와 Follow 집합을 생성하시오. First(lexp) = { number, identifier, ( }First(atom) = { n..
TCC 컴파일러로 구현한 스캐너 문법 예제 (Tiny C Compiler) 이 자료는 제가 대학원생 시절에 과제로 했던 내용으로 아래에 삽입된 그림들을 보시면 아시겠지만, 윈도우 XP에서 작업했었습니다. 최근에 윈도우 7에서 10으로 넘어가며 Tiny-C 컴파일러에 대한 몇 가지 이슈를 들었습니다. 대표적인 것은 tcc 파일을 인식하지 못한다거나, 인식하더라도 오동작을 한다는 것이죠. 이건 임베디드 쪽에서도 마찬가집니다. 우분투를 비롯해 최근에 32비트를 버리는 쪽으로 시대가 기울고 있기에 상대적으로 지원이 미비해지는 점도 있긴 합니다만, 자세한 건 저희로선 알 수가 없어요. 이 자료는 TCC 컴파일러 감을 잡거나, 아직 XP를 사용하는 분들에게 적합합니다. 그동안 시간이 많이 지나 곳곳에서 변화한 것이..
컴퓨터 구조와 설계 (원리 이해, 기본 구성) 1. 컴퓨터의 기본 구성 기본적인 구성 레지스터AC - (누산기) 프로세서 처리용DR - 메모리에 읽어 온 피연산자 저장PC - 다음 수행할 명령 주소 값 저장AR - 메모리 주소 값을 나타냄IR - 메모리에서 읽어 온 명령어를 저장TR - 계산 도중 임시 데이터를 저장OUTR - 문자 (8bit) 출력을 송신INPR - 문자 (8bit) 출력을 수신 명령어 형식(세 가지 명령어 코드 형식) 메모리 참조 명령어레지스터 참조 명령어입출력 명령어 2. 컴퓨터 기본 동작에 대해컴퓨터 기본 동작의 흐름도(아래 그림 5개는 참조만) 레지스터 전송문(컴퓨터 기본 동작의 기술 II (레지스터 전송 흐름)) 3. 기본 컴퓨터의 설계(4096*16) 기본적인 컴퓨터의 H.W..
리눅스 Flex 컴파일러 윈도우 설치 (LEX Linux GNU 버전을 Windows7) 리눅스 Flex 컴파일은 리눅스 Lex의 GNU 버전 프로그램입니다. 단순한 GNU 버전인 것만은 아니고, 많은 부분이 개선된 프로그램이라고 합니다. MinGW 설치(윈도우즈에 리눅스 개발환경 설정하기) 12flex linenos.flexgcc lexyy.c -lflcs 위와 같은 리눅스 Flex 컴파일 명령어들을 사용하기 위해선 윈도우즈에 리눅스 개발환경을 설정해야 합니다. 리눅스에선, 12yum install bisonyum install flexcs 와 같은 명령어로 쉽게 설치해야 사용할 수도 있습니다. 저와 같이 리눅스에서 사용하는 컴파일러인 gcc를 사용하기 위해선 MinGW를 윈도우7에 먼저 설치해야 합니..