newtype
::: newtype의 지식창고 :::
newtype
전체 방문자
오늘
어제
  • 분류 전체보기 (392)
    • Dev (214)
      • C, C++ (43)
      • Go (5)
      • Web (49)
      • DBMS (21)
      • DevOps (8)
      • Java (2)
      • Windows, Win32 (4)
      • Visual Basic (5)
      • C# (2)
      • Mobile (25)
      • SQL CE (7)
      • Google Map (6)
      • Python (2)
      • cygwin (2)
      • 기타 (32)
      • Ruby (1)
    • 명언 (10)
    • 모임 (18)
      • 붕주회 (3)
      • 신흥컴정 (14)
      • 웹20기 (1)
    • 사진 (8)
    • 불펌 (29)
    • 막글 (98)
    • 게임 (6)
    • 여행 (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

  • whoami
06-02 21:25
hELLO · Designed By 정상우.
newtype

::: newtype의 지식창고 :::

Dev/Python

C 상수 파서

2017. 3. 31. 16:38
  • 아주 오래전에 만들어 놓은 것을 github에 올리면서 readme 파일을 작성했습니다.

개요

  • c 헤더 파일을 파싱해서 '#define', 'enum' 구문으로 정의된 값, 상수명을 검색합니다.
  • 원본: https://github.com/lmk/c_define_parser

사용법

  • error.h 파일의 내용이 아래와 같을 때

    #define ERROR_NONE 0x00
    #define ERROR_LOGIN 0x01
    #define ERROR_FILE 0x02
    #define ERROR_DEVICE 0x03
  • 파라미터로 1을 입력하면 ERROR_LOGIN을 찾아줍니다

    $ find_const.py 1
    1 is ERROR_LOGIN

구현 로직

  1. 모든 파일을 머지한다.
  2. 주석을 제거한다.
  3. enum 구문을 파싱해서 dic_command에 저장한다.
  4. define 구문을 파싱해서 dic_command에 저장한다.
  5. dic_command에 저장된 상수 값을 찾아서 치환 한다.
  6. dic_command의 key, value 값을 바꿔서 dic_command_r에 저장한다.
  7. 값으로 상수를 찾는다.

선행 작업

  • find_const.py 파일 9번째 줄에 FILE_PATH 배열에 파싱할 헤더파일 목록을 추가합니다.
반응형
저작자표시 (새창열림)

'Dev > Python' 카테고리의 다른 글

python에서 ctype을 이용한 c library 연동 예제  (0) 2016.04.29
    'Dev/Python' 카테고리의 다른 글
    • python에서 ctype을 이용한 c library 연동 예제
    newtype
    newtype
    지극히 개인적인 지식의 창고

    티스토리툴바