语法分析器设计,实在不会了

【问题描述】

请根据给定的文法设计并实现语法分析程序,能基于词法分析程序所识别出的单词,识别出各类语法成分。输入输出及处理要求如下:

(1)需按文法规则,用递归子程序法对文法中定义的语法成分进行分析;

(2)为了方便进行自动评测,输入的被编译源文件统一命名为testfile.txt(注意不要写错文件名);输出的结果文件统一命名为output.txt(注意不要写错文件名);结果文件中包含如下两种信息:

1)按词法分析识别单词的顺序,按行输出每个单词的信息(要求同词法分析作业,对于预读的情况不能输出)。

2)在文法中出现(除了<BlockItem>, <Decl>, <BType> 之外)的语法分析成分分析结束前,另起一行输出当前语法成分的名字,形如“<Stmt>”(注:未要求输出的语法成分仍需要进行分析,但无需输出)

【输入形式】testfile.txt中的符合文法要求的测试程序。

【输出形式】按如上要求将语法分析结果输出至output.txt中。

【特别提醒】(1)本次只考核对正确程序的处理,但需要为今后可能出现的错误情况预留接口。

             (2)当前要求的输出只是为了便于评测,完成编译器中无需出现这些信息,请设计为方便打开/关闭这些输出的方案。

【样例输入】

int main(){
    int c;
    c= getint();
    printf("%d",c);
    return c;
}

【样例输出】

`INTTK int
MAINTK main
LPARENT (
RPARENT )
LBRACE {
INTTK int
IDENFR c

SEMICN ;

IDENFR c

ASSIGN =
GETINTTK getint
LPARENT (
RPARENT )
SEMICN ;

PRINTFTK printf
LPARENT (
STRCON "%d"
COMMA ,
IDENFR c






RPARENT )
SEMICN ;

RETURNTK return
IDENFR c






SEMICN ;

RBRACE }