컴파일러 RL파싱
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

컴파일러 RL파싱에 대한 보고서 자료입니다.

목차

없음

본문내용

s a terminal node
// if it is a terminal node, only num type will have value
// in the data field.
// There is nothing to do.
}
else { // this is a nonterminal node
for (i=0; i < curr->child_cnt ; i++)
evaluate_tree(curr->children[i]) ;
switch ( curr->rno_used ) {
case 0: curr->val = curr->children[0]->val; break;
case 1: curr->val = curr->children[0]->val + curr->children[2]->val; break;
case 2: curr->val = curr->children[0]->val - curr->children[2]->val; break;
case 3: curr->val = curr->children[0]->val; break;
case 4: curr->val = curr->children[0]->val * curr->children[2]->val; break;
case 5: curr->val = curr->children[0]->val / curr->children[2]->val; break;
case 6: curr->val = curr->children[0]->val; break;
case 7: curr->val = curr->children[1]->val; break;
case 8: curr->val = curr->children[0]->nodesym.data ; // 토큰이 자식 노드가 되는 경우임.
break; // F -> num
} // switch.
} // else
} // end of evaluate_tree
// input parameter state: if it is >=0, it is to push a state number.
// if -1, it is to push a grammar symbol.
void push (n_ptr stack [100], sym psymbol, int state ) {
n_ptr newnode ;
newnode = (n_ptr) malloc ( sizeof (struct nodetype) ) ; // 트리 노드 하나를 배정 받음.
newnode->state = state ;
if (state == -1)
newnode -> nodesym = psymbol ; // grammer 심볼을 저장
top++ ;
stack [top] = newnode ; // 새 노드에 대한 포인터를 스택에 밀어 넣음.
} // end of push.
<실행결과>

저번 과제인 LL_calcuator를 프로그래밍하고 나서 한 이 과제는 그렇게 어렵지 않았습니다.
하지만 아직은 action table과 goto table 에 대한 개념을 더 이해해야 할 것 같습니다.
기말고사 파이팅!!!

키워드

컴파일러,   RL,   파싱,   RL파싱
  • 가격1,000
  • 페이지수7페이지
  • 등록일2007.05.08
  • 저작시기2007.4
  • 파일형식한글(hwp)
  • 자료번호#408417
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니