电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

正规文法正规式

正规文法正规式_第1页
1/18
正规文法正规式_第2页
2/18
正规文法正规式_第3页
3/18
由正规文法构造正规式 年级_______ 专业________ 学号________ 姓名__________ 一、实验目的要求 输入:任意的正规文法。 输出:相应的正规式。 二、实验原理 一个正则表达式的值是正则集,它是正则语言的另一种表示法。不难看出,除了符号Φ 外,一个正则表达式的含义类似于正则文法的一个非终结符号规则右部的含义。例如,对于<数字> ::= 0/1/2/…/9,由非终 结 符 数 字 所 产 生 的 字 符 串 集 合 与 正 则 表 达 式0/1/2/…/9 所定义的字符串集合是相同的。正则集Φ ,它对应一个不包含任何句子的语言,引进的目的主要是为了理论上的完备性。 三、实验代码: #inclu de #inclu de #inclu de #inclu de u sing namespace std; stru ct Ru le { string left; //规则左部,因为输入的为 2 型文法, string right; //规则右部 }; struct RuleData { string left; vector right; }; class Grammar { private: vector grammar; //文法 Rule rule; //规则 vector Dleft; RuleData ruledata; public: Grammar(){} ~Grammar(){} void ChangeInput (string input); //输入分析 void Show(); // void DataChange (int C); //存储结构转换 vector grammardata; }; void Grammar::ChangeInput (string input) //扫描字符串,遇到'-'停止, { //并跳两格 int help1 = 0; rule.left.erase(); rule.right.erase(); for (int i = 0; i < int (input.size()); i++) { if (input[i] == '-') { help1 = i; break; } rule.left += input[i]; } if (help1 != 1) { cout<<"不符合要求!!"; exit(0); } help1 = help1 + 2; for (int j = help1; j 复杂 { int l = 0; grammardata.clear(); ruledata.left.erase(); ruledata.right.clear(); ruledata.left = grammar[0].left; ruledata.right.push_back (grammar[0].right); grammardata.push_back (ruledata); for (i = 1; i < in...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

正规文法正规式

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部