목차
1. 설명 및 algorithm
2. List
3. 결 과
2. List
3. 결 과
본문내용
;
exit(1);
}
void symbol_reverse(void) /* parsing table의 값을 거꾸로 stack에 넣음 */
{
int s = 0;
int f = 0;
while(reverse[f]!='\0'){
f++;
}
f--;
for( ; f >= s; f--){
push(reverse[f]);
}
}
void parser(void) /*parsing table과 연결시켜 input을 parsing한다.*/
{
while(temp != '$'){ /* stack이 empty일 때까지 반복*/
temp = top_val();
if((temp=='c')||(temp=='+')||(temp=='(')||(temp=='*')||(temp==')')){
/* top이 terminal */
if(temp == token){
pop();
token = yylex();
}
else error();
}
else if((temp=='E')||(temp=='e')||(temp=='T')||(temp=='t')||(temp=='F')){
/* top이 nonterminal */
switch(temp){
case 'E': non_tml = 0; break;
case 'e': non_tml = 1; break;
case 'T': non_tml = 2; break;
case 't': non_tml = 3; break;
case 'F': non_tml = 4; break;
}
switch(token){
case 'c': in_sym = 0; break;
case '+': in_sym = 1; break;
case '*': in_sym = 2; break;
case '(': in_sym = 3; break;
case ')': in_sym = 4; break;
case '$': in_sym = 5; break;
}
if(parsing_table[non_tml][in_sym][0]=='e'){
/*parsing table에서 ε에 대한 것*/
pop();
printf("%c -> empty\n",temp);
}
else if(parsing_table[non_tml][in_sym][0]=='c'){
/*output에서 id로 표현*/
pop();
strcpy(reverse,parsing_table[non_tml][in_sym]);
symbol_reverse();
printf("%c -> id\n",temp);
}
else{ /*그 이외의 경우를 처리*/
pop();
strcpy(reverse,parsing_table[non_tml][in_sym]);
symbol_reverse();
printf("%c -> %s\n",temp,parsing_table[non_tml][in_sym]);
}
}
}
if((temp=='$')&&(token=='$')){ /* input과 stack이 모두 비어있는 경우 */
printf("Parsing Completed!\n");
getch();
exit(1);
}
else error();
}
3. 결 과
exit(1);
}
void symbol_reverse(void) /* parsing table의 값을 거꾸로 stack에 넣음 */
{
int s = 0;
int f = 0;
while(reverse[f]!='\0'){
f++;
}
f--;
for( ; f >= s; f--){
push(reverse[f]);
}
}
void parser(void) /*parsing table과 연결시켜 input을 parsing한다.*/
{
while(temp != '$'){ /* stack이 empty일 때까지 반복*/
temp = top_val();
if((temp=='c')||(temp=='+')||(temp=='(')||(temp=='*')||(temp==')')){
/* top이 terminal */
if(temp == token){
pop();
token = yylex();
}
else error();
}
else if((temp=='E')||(temp=='e')||(temp=='T')||(temp=='t')||(temp=='F')){
/* top이 nonterminal */
switch(temp){
case 'E': non_tml = 0; break;
case 'e': non_tml = 1; break;
case 'T': non_tml = 2; break;
case 't': non_tml = 3; break;
case 'F': non_tml = 4; break;
}
switch(token){
case 'c': in_sym = 0; break;
case '+': in_sym = 1; break;
case '*': in_sym = 2; break;
case '(': in_sym = 3; break;
case ')': in_sym = 4; break;
case '$': in_sym = 5; break;
}
if(parsing_table[non_tml][in_sym][0]=='e'){
/*parsing table에서 ε에 대한 것*/
pop();
printf("%c -> empty\n",temp);
}
else if(parsing_table[non_tml][in_sym][0]=='c'){
/*output에서 id로 표현*/
pop();
strcpy(reverse,parsing_table[non_tml][in_sym]);
symbol_reverse();
printf("%c -> id\n",temp);
}
else{ /*그 이외의 경우를 처리*/
pop();
strcpy(reverse,parsing_table[non_tml][in_sym]);
symbol_reverse();
printf("%c -> %s\n",temp,parsing_table[non_tml][in_sym]);
}
}
}
if((temp=='$')&&(token=='$')){ /* input과 stack이 모두 비어있는 경우 */
printf("Parsing Completed!\n");
getch();
exit(1);
}
else error();
}
3. 결 과
키워드
추천자료
DTD에 관한 모든것
자바 기반의 보안 프로그래밍
에이다 [Ada]프로그래밍언어
병렬 프로그램
[레포트]프로그래밍
C/C++로 제작한 지뢰찾기
[자바][JAVA][자바스크립트]자바(JAVA)의 의미, 자바(JAVA)의 특징, 자바(JAVA)의 유래, 자바...
c로 쓴 자료구조론 연습문제 7장(정렬sorting)
2011년 2학기 컴퓨터구조 기말시험 핵심체크
리눅스(Linux)에 대하여 [A+] .PPT자료
파인만의 엉뚱발랄한 컴퓨터강의:계산이론
로봇의 구조
AVR ATmega128을 이용한 LED실험 해석 (avr atmega128,led실험,led점멸,led 시프트,쉬프트,pw...
2015년 1학기 C프로그래밍 기말시험 핵심체크