나는 겉으로보기에는 단순한 변화/무익함을 줄이기 위해 노력해 왔습니다. 당연히 충돌을 무시하면 파서가 잘 작동하지만 규칙을 재구성하면 훨씬 안전 해집니다. 자, 내가 하나의 충돌 상대적으로 복잡한 문법 단순화했습니다 : statement_list
: statement_list statement
|
;
statement
저는 shift-reduce 구문 분석에 대해 배우려고합니다. 우리가 ANSI C Yacc grammar에서 영감을 작업의 순서를 시행 재귀 규칙을 사용하여 다음과 같은 문법을 가지고 가정 : S: A;
P
: NUMBER
| '(' S ')'
;
M
: P
| M '*' P
| M '/' P
저는 컴파일러 디자인 과목에 대해 shift-reduce 알고리즘을 사용하고 있습니다. 이것은 코드입니다. void shiftReduce(char str[MAX_CHAR], int prodNum, int line)
{
int limit = 5, y=0;
int substrFlag = 1; //0 true 1 false
int c