标签:Leaf cout 递归 void 分析法 str TG 软件 match
【实验目的】
(1)掌握自上而下语法分析的要求与特点。
(2)掌握递归下降语法分析的基本原理和方法。
(3)掌握相应数据结构的设计方法。
【实验内容】
用递归下降法编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。
【实验要求】
对下列文法,用递归下降分析法对任意输入的符号串进行分析:
E->TG G->+TG|-TG G->ε
T->FS S->*FS|/FS S->ε
F->(E) F->i
代码精髓:
根据上述分析法进行建立
void E();
1 void E() 2 { 3 cout << "S->TG\t\t"; 4 Fen(); 5 Sheng(); 6 T(); 7 G(); 8 9 }void E()
void T();
1 void T() 2 { 3 cout << "T->FS\t\t"; 4 Fen(); 5 Sheng(); 6 F(); 7 S(); 8 Leaf = 0; 9 }Void T()
void G();
1 void G() 2 { 3 if (str[lookahead] == '+') 4 { 5 cout << "G->+TG\t"; 6 match('+'); 7 T(); 8 G(); 9 Leaf = 1; 10 } 11 else if (str[lookahead] == '-') 12 { 13 cout << "G->-TG\t"; 14 match('-'); 15 T(); 16 G(); 17 Leaf = 1; 18 } 19 cout << "G->ε\t\t"; 20 Fen(); 21 Sheng(); 22 Leaf = 1; 23 24 }void G()
void F();
1 void F() 2 { 3 4 if (str[lookahead] == 'i') 5 { 6 cout << "F->i\t"; 7 match('i'); 8 Leaf = 1; 9 } 10 11 else if (str[lookahead] == '(') 12 { 13 cout << "F->(E)\t"; 14 match('('); 15 E(); 16 if (str[lookahead] == ')') 17 match(')'); 18 else Error(); 19 Leaf = 0; 20 } 21 else 22 { 23 Leaf = 0; 24 Error(); 25 26 } 27 28 }void F()
void S();
void S()
运行结果:
标签:Leaf,cout,递归,void,分析法,str,TG,软件,match 来源: https://www.cnblogs.com/smartisn/p/11775773.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。