LL(1)文法的判断,递归下降分析程序
void ParseT(){
switch(lookahead){ case (,i: ParseF(); ParseT'(); break; default: printf("语法错误! \n"); exit(0); } }void ParseT'(){ switch(lookahead){ case *: MatchToken(*); ParseF(); ParseT'(); break; case #,),+: break; default: printf("语法错误! \n"); exit(0); } } void ParseE(){ switch(lookahead){ case (,i: ParseT(); ParseE'(); break; default: printf("语法错误! \n"); exit(0); }} void ParseE'(){ switch(lookahead){ case +: MatchToken(+); ParseT(); ParseE'(); break; case #,): break; default: printf("语法错误! \n"); exit(0); } } void ParseF(){ switch(lookahead){ case (: MatchToken((); ParseE() MatchToken()); break; case i: MatchToken(i); break; default: printf("语法错误! \n"); exit(0); }}
void ParseT(){ switch(lookahead){ case (,i: ParseF(); ParseT'(); break; default: printf("语法错误! \n"); exit(0); } } void ParseT'(){ switch(lookahead){ case *: MatchToken(*); ParseF(); ParseT'(); break; case #,),+: break; default: printf("语法错误! \n"); exit(0); } } void ParseE(){ switch(lookahead){ case (,i: ParseT(); ParseE'(); break; default: printf("语法错误! \n"); exit(0); } } void ParseE'(){ switch(lookahead){ case +: MatchToken(+); ParseT(); ParseE'(); break; case #,): break; default: printf("语法错误! \n"); exit(0); } } void ParseF(){ switch(lookahead){ case (: MatchToken((); ParseE() MatchToken()); break; case i: MatchToken(i); break; default: printf("语法错误! \n"); exit(0); } }
浙公网安备 33010602011771号