1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 语法分析器c语言 递归子程序 算术表达式文法的语法分析(递归子程序法).pdf

语法分析器c语言 递归子程序 算术表达式文法的语法分析(递归子程序法).pdf

时间:2022-10-28 19:43:32

相关推荐

语法分析器c语言 递归子程序 算术表达式文法的语法分析(递归子程序法).pdf

算术表达式文法的语法分析(递归子程序法)

算术表达式文法的语法分析

——递归子程序法

一、实验内容

EE+T|T

对文法 TT*F|F 进行语法分析。

F(E)|i

二、程序源代码 (C++ )

/*文法可表示成 E -->TE'

* E'-->+TE'

* T -->FT'

* T'-->*FT'

* F -->i|(E)

*/

#include

#include

using namespace std;

void e();

void e1();

void t();

void t1();

void f();

string str;

char sym;

int p = 0;

bool result = true;

void advance()

{

cout << "advance()" << endl;

//如果是多位数,跳过后面的数字直接读数字后的运算符

if (isdigit(str[p]))

{

while (isdigit(str[p]))

{

p++;

}

1

}

else

{

p++;

}

sym = str[p];

}

void error()

{

result = false;

}

/*

* 主函数

*/

int main()

{

cin >> str;

sym = str[p];

e();

if (result)

{

cout << "Accept!" << endl << endl;

}

else

{

cout << "Error!" << endl << endl;

}

return 0;

}

void e()

{

cout << "e()" << endl;

t();

e1();

}

2

void e1()

{

cout << "e1()" << endl;

if (sym == '+')

{

advance();

t();

e1();

}

}

void t()

{

cout << "t()" << endl;

f();

t1();

}

void t1()

{

cout << "t1()" << endl;

if (sym == '*')

{

advance();

f();

t1();

}

}

void f()

{

cout << "f()" << endl;

if (isdigi

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。