编译原理
追光者2020
没有实力的愤怒毫无意义。
展开
-
编译原理将带“|”的规则转化
将E::=T*F|i形式的规则转化为E::=T*F 和E::=i的形式#include<bits/stdc++.h>using namespace std;struct GRAM //定义一个产生式结构体{ string left; //定义产生式的左部 string right; //定义产生式的右部}; int main(){ c...原创 2018-07-12 12:18:57 · 345 阅读 · 0 评论 -
编译原理最小化
#include<bits/stdc++.h>using namespace std;struct GRAM{ //$代表空 string a; string b; string c;};int exit(string s,string d){ if(d!=""&&d.find(原创 2018-07-12 12:21:37 · 1118 阅读 · 0 评论 -
编译原理加标记法(压缩文法等价变换)
#include<bits/stdc++.h>using namespace std;//保存左右部的字符串和标记 struct STR{ string s; int flag[100];};//判断终结符和非终结符 int Norterminal(char c){ if(c>='A'&&c<='Z') ...原创 2018-07-12 12:21:25 · 2903 阅读 · 0 评论 -
编译原理NFA转化为DFA
使用列表法对文法进行转化将这个表作为程序的输入。输入样例为P117第六题。#include<bits/stdc++.h>using namespace std;struct GRAM{ //$代表空 string a; string b; string c;};int main(){ int num,len; GRAM...原创 2018-07-12 12:21:09 · 3959 阅读 · 2 评论 -
编译原理预测分析法
预测分析法基本思路求解first集合和follow集合,之后构造预测分析表,用到的结构体为GRAM,其中包含该非终结符a以及其对应的first和follow,输入格式如下(以#结束输入) E::=TE’ E’::=+TE’|ε T::=FT’ T’::=*FT’|ε F::=(E)|i ##include<bits/stdc++.h>using namespace s...原创 2018-07-12 12:20:52 · 6616 阅读 · 0 评论 -
编译原理消去规则左递归
#include<bits/stdc++.h>using namespace std;struct GRAM //定义一个产生式结构体{ string left; //定义产生式的左部 string right; //定义产生式的右部}; int main(){ GRAM *p=new GRAM[50]; char str[80]...翻译 2018-07-12 12:20:24 · 1132 阅读 · 0 评论 -
编译原理算符优先矩阵的构造
算符优先法中算符优先矩阵的构造需要求出firstTerm以及lastTerm,由于这个是在预测分析法上进行修改的,结构体的定义并未进行修改,其中包含该非终结符a以及其对应的first(即为firstTerm)和follow(即为lastTerm),输入格式如下(以#结束输入) Z::=E E::=T|E+T T::=F|T*F F::=(E)|i ##include<bits...原创 2018-07-12 12:20:03 · 7480 阅读 · 0 评论 -
编译原理递归下降法
p126例4.1 对于文法G[E] E::=E+T|T T::=T*F|F F::=(E)|i,在消去左递归以及回溯性之后的等价文法为: E::=TE’ E’::=+TE’|T::=FT′T′::=∗FT′|T::=FT′T′::=∗FT′| T::=FT' T'::=*FT'| F::=(E)|i(其中$代表空)#include<iostream&g...原创 2018-07-12 12:19:39 · 1009 阅读 · 0 评论 -
编译原理项集规范族(初步)
#include<bits/stdc++.h>using namespace std;int Norterminal(char c){ if(c>='A'&&c<='Z') return 1; else if(c!=':'&&c!='='&&amp原创 2018-08-07 20:42:33 · 1158 阅读 · 0 评论