strong LL(1) 의 형태의 문법으로 작성하면
이를 순환 프로시져로 자동 작성해 주는 프로그램 이다.
context free 문법과 같이 문법을 작성하기 위해서는
NONTERMINAL -> TERMINAL or NONTERMINAL;
하나의 NONTERMINAL에 여러개의 생성규칙을 달고 싶으면 정규식과 비슷하게
union mark '|' 을 붙여서 구분해준다. 그리고 하나의 생성규칙이 끝나면 end mark ';' 를 붙여줘야 한다.
예제는 다음과 같다.
위 와 같이 입력하고 gramfile.txt 라는 이름으로 저장해야 한다. 같은 폴더내 들어있으면 된다.
라인단위 주석도 붙일 수 있다. 생성규칙은 항상 Nonterminal 로 시작하며 영문자 대소문자 + 언더바, 이면 된다.
'->' 이후 몸통이 온다. 몸통 안에는 terminal 또는 nonterminal이 올 수 있는데
terminal의 경우 ' 문자로 둘러싸주고 안에는 영문자 대소문자 + 언더바 만 가능하다.
예제를 잘 보면 여러개의 생성규칙을 가질 경우 ('|' 으로 구분되는 놈)
몸통의 제일 앞대가리는 항상 TERMINAL 이다.
왜냐하면 한개의 심볼을 미리 읽었을 때 이것이 어떤 생성규칙을 선택할지 꼭 결정해야 하기 때문이다.
(중복체크는 하지 않으니 문법을 잘 잘성해야 함)
strong LL(1) grammar 형식으로 작성되기만 하면 된다.
출력 파일은 sl2pout.c 파일로 만들어지며 위 예제의 출력 결과는 다음과 같다.
'복잡프로그래밍' 카테고리의 다른 글
pglexer 코드 (0) | 2011.09.02 |
---|---|
sl2p 프로그램 소스 (0) | 2010.12.16 |
sl2p 프로그램 (0) | 2010.12.16 |
pg_lex 프로그램 (0) | 2010.10.27 |
pglex 사용예제 (0) | 2010.10.09 |
pglex 소스 (0) | 2010.10.09 |
댓글을 달아 주세요