BRONZE
BRONZE 등급의 판매자 자료

Mini C Interpreter (인터프리터)

이 프로그램은 C & C++로 작성된 것이 아닌, 리눅스상의 Lex & Yacc을 이용한 것임을 밝힙니다. Lex & Yacc의 버전은 flex와 bison을 기준으로 합니다. 입력으로 C언어의 일부 기능만을 사용하는 Mini C를 받습니다. 그 후 토큰 분리 및 트리 출력을 합니다. 마지막으로 연산 결과를 출력합니다. 연산가능한 연산자는 아래와 같습니다. "else, if, int, return, void, while, exit;, ==, !=, <, >, <=, >=, !, &&, ||, ++, --, +=, -=, *=, /=, %=, =, -, +, *, /, %" ## 포함 자료 ## 프로그램소스 + 예제소스 + 문서 + 결과화면 이미지
압축파일
최초등록일 2005.01.05 최종저작일 2005.01
Mini C Interpreter (인터프리터)
  • 미리보기

    소개

    이 프로그램은 C & C++로 작성된 것이 아닌, 리눅스상의 Lex & Yacc을 이용한 것임을 밝힙니다.
    Lex & Yacc의 버전은 flex와 bison을 기준으로 합니다.

    입력으로 C언어의 일부 기능만을 사용하는 Mini C를 받습니다. 그 후 토큰 분리 및 트리 출력을 합니다. 마지막으로 연산 결과를 출력합니다.

    연산가능한 연산자는 아래와 같습니다.
    "else, if, int, return, void, while, exit;, ==, !=, <, >, <=, >=, !, &&, ||, ++, --, +=, -=, *=, /=, %=, =, -, +, *, /, %"

    ## 포함 자료 ##
    프로그램소스 + 예제소스 + 문서 + 결과화면 이미지

    컴파일 실행환경

    ◇ 실행 방법
    - flex와 bison을 기준으로 함.
    ① 제출된 압축파일의 압축을 풀어 모든 파일을 리눅스 상의 같은 Directory에 위치 시킨다.
    ② Linux/Unix shell command상에서 make 명령어를 수행시켜 ‘MiniC’라는 실행 파일을 생성한다.
    ③ 아래와 같은 방법으로 Mini C Interpreter에 동봉된 Mini C 예제 코드를 입력으로 준다.(단, read()함수의 이용 시 ‘<’ 명령 대신 직접 Console을 통해 소스 코드를 입력해야 한다. – Yacc Spec. 참조)
    ## 실행명령 =>‘./MiniC < 파일명.mc’##
    ④ 입력으로 주어진 Mini C 예제 코드에 대한 Parse Tree와 그 실행 결과가 출력된다.

    본문내용

    ◇ Spec. for Lex
    - 수업 교재 부록 A에 정의된 Mini C의 Keyword 및 연산자 중 ‘const’ Keyword를 제외한 모든 Keyword 및 연산자를 구현 하였음. (기타 구현과 관련된 세부 사항은 소스 코드의 주석을 참조)


    ◇ Spec. for Yacc
    - 배열 표현과, 변수 선언 시 초기화, ‘const’ Keyword 관련 부분을 제외한 모든 부분(함수 구현)을 구현 하였으며 수업 교재에서 제시된 코드를 참조하여 새롭게 재작성 하였음. 한가지 언급 할 것은 Yacc 소스 코드의 컴파일 시 shift/reduce 충돌이 하나 존재하는 것으로 나오는데 이는 selection_stmt의 IF문과 IF ELSE사이에서 발생하는 것으로, 교재에 제시된 모범 예제의 같은 기능을 수행하는 부분에서도 이와 같은 충돌이 존재하고 있다. 그 충돌을 수정하려 하였으나 굳이 하지 않아도 default Rule의 적용 등으로 자체 해결되고 있었고 그 수정에 드는 코드 처리 등 효율 면에서 떨어지기에 굳이 하지 않았다. 교재 모범 예제의 작성자도 같은 의도에서 굳이 수정하지 않았을 것으로 판단된다. (기타 구현과 관련된 세부 사항은 소스 코드의 주석을 참조)
    ※ 제약조건1 : 함수 구현시 main의 상단에 위치해야지만 입력 프로그램 실행이 가능하다. 아래에 존재할 경우 파싱트리까지는 출력이 되지만, main에서 함수의 존재 여부를 알 수 없어서 호출이 불가능하다.
    ※ 제약조건2 : 사용자의 입력을 받는 read()가 포함된 입력 프로그램을 ‘$ ./MiniC < 파일명.mc’ 으로 실행을 할 경우, 파이프의 연결로 인해 입력 값을 Console로부터 받을 수 없게 된다. 따라서 read()가 제 기능을 수행하게 하려면 ‘$ ./MiniC’ 으로 실행을 하여 입력을 Console로부터 받게 한 후, 소스코드를 직접 Typing 해줘야 한다. (참고: Console 입력 시, MiniC의 수행 후 모든 소스코드를 입력한 다음 ‘exit;’를 쳐야 parsing이 시작된다)

    참고자료

    · 없음
  • 자료후기

    Ai 리뷰
    지식판매자의 해당 자료는 과제를 작성하는 데 큰 도움이 되었고, 내용이 풍부하여 많은 정보를 얻을 수 있었습니다. 정말 추천할 만한 자료입니다.
    • 자주묻는질문의 답변을 확인해 주세요

      해피캠퍼스 FAQ 더보기

      꼭 알아주세요

      • 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
        자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
        저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
      • 해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.
        파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
        파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우
    문서 초안을 생성해주는 EasyAI
    안녕하세요. 해피캠퍼스의 방대한 자료 중에서 선별하여 당신만의 초안을 만들어주는 EasyAI 입니다.
    저는 아래와 같이 작업을 도와드립니다.
    - 주제만 입력하면 목차부터 본문내용까지 자동 생성해 드립니다.
    - 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
    - 스토어에서 무료 캐시를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
    이런 주제들을 입력해 보세요.
    - 유아에게 적합한 문학작품의 기준과 특성
    - 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
    - 작별인사 독후감
    해캠 AI 챗봇과 대화하기
    챗봇으로 간편하게 상담해보세요.
    2025년 06월 03일 화요일
    AI 챗봇
    안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
    1:10 오후