YACC(1)

명칭
yacc - LALR(1) 파서 제네레이터

서식
yacc [-dlrtv] [-b file_prefix] [-o output_filename] [-p symbol_prefix] filename

해설
yacc 유틸리티는, filename (으)로부터 문법 사양을 읽어내, 그 사양으로부터 LR(1) 파서를 생성합니다. 파서는, C 언어로 쓰여진 LALR(1) 해석 테이블과 드라이버 routine세트로부터 구성되어 있습니다. yacc 유틸리티는 통상, y.tab.c 그렇다고 하는 파일에 해석 테이블과 드라이버 routine를 기입합니다.

이하의 옵션을 사용할 수 있습니다:

-b file_prefix
    출력 파일명의 선두에 가세하는 프레픽스 캐릭터 라인을 file_prefix (으)로 변경합니다. 디폴트의 프레픽스는 y 입니다.

-d  헤더 파일 y.tab.h (을)를 생성하도록 지시합니다.

-l  만약 -l 옵션이 지정되어 있지 않으면, yacc (은)는 생성 코드에 #line 지시문을 삽입합니다. #line 지시문은, 생성된 코드안의 에러와 유저의 오리지날 코드와의 관련 짓고를 C 컴파일러에 실시하게 합니다. 만약 -l 옵션이 지정되어 있으면, yacc (은)는 #line 지시문을 삽입하지 않습니다. 유저에 의해 지정된 #line 지시문은 그대로 남겨집니다.

-o output_filename
    yacc 에 대해, 디폴트 파일의 y.tab.c 대신에 output_filename 에 생성 코드를 출력시킵니다.

-p symbol_prefix
    yacc 에 의해 생성된 심볼의 선두에 붙이는 프레픽스를 symbol_prefix 그리고 지정된 캐릭터 라인으로 변경합니다. 디폴트의 프레픽스는, 캐릭터 라인 yy 입니다.

-r  yacc (은)는 코드와 테이블을 다른 파일에 출력합니다. 코드 파일명은 y.code.c 되어, 테이블 파일명은 y.tab.c 됩니다.

-t  yacc 에 의해 생성되는 프리프로세서 지시문을 변경해, 디버그 용무의 문장을 컴파일 된 코드안에 묻습니다.

-v  생성된 파서의 상세를 인간이 읽을 수 있는 형식에서, 파일 y.output 에 출력합니다.

만약 환경 변수 TMPDIR 하지만 설정되어 있으면, TMPDIR (으)로 설정되어 있는 캐릭터 라인은 임시 파일이 만들어진다 디렉토리명으로서 사용됩니다.

관련 파일
y.code.c
y.tab.c
y.tab.h
y.output
/tmp/yacc.aXXXXXXXXXX
/tmp/yacc.tXXXXXXXXXX
/tmp/yacc.uXXXXXXXXXX

진단
만약 환원할 수 없는 룰이 있었을 경우, 그 룰수가 표준 에러 출력에 표시됩니다. 만약 어떠한 LALR(1)의 충돌이 있었을 경우, 충돌수도 표준 에러 출력에 겉(표) 나타납니다.