【编译原理】语法分析LL(1)分析法的FIRST和FOLLOW集

  • 时间:
  • 浏览:2

其中文法文件的数据格式为(按照平时做题的输入格式设计的):

运行结果(请忽略集合最后一个多多多元素后的逗号。。。):

求FOLLOW集的主次

3. 全都 的算法用守护进程实现不须繁复,全都它规则比较多,且退出的条件是“集合不再增大”,手算起来一轮一轮的容易乱。祝我期末好运吧。

示例文件如下:(注:非终结符本应都用大写字母,原题用的是加上标的土辦法 ,如E′,但我用char型存每个符号,全都用的是相应的小写字母,如e)

1. 语法分析的每个终结符号实际上代表一个多多多单词,是从词法分析器获取的,这里为了繁复什么的问题全都只用了一个多多多char型表示;而每个非终结符号则是一个多多多语法单元,这里同样用char型表示了;

第一行:所有非终结符,无空格,第一个多多多为日后开始了了符号;

老师和同学能很敏锐地求出来,而我不到按照规则,像守护进程一样每根绳子 条执行。于是我把你是什么过程写成了守护进程,如下:

主函数的流程很简单,从文件读入指定格式的文法,全都依次求文法的FIRST集、FOLLOW集

2. 感觉我的实现稍显繁复,C++的集合操作不太会用(这麼 找到原生的类似于.addAll全都 的土辦法 ,全都是被委托人用迭代器一个多多多个加的),考完试用其他语言实现一个多多多更简洁的。

剩余行:每行描述了一个多多多非终结符的所有产生式,第一个多多多字符为产生式头(非终结符),后跟一个多多多整数位候选式的个数n,后能 是n个以空格分隔的字符串为产生式体。

求FIRST集的主次:

与FIRST集相关的有哪几个辅助函数:

注:

数据元素的定义:

  教课书上的规则如下,用我理解的语言描述的:

第二行:所有终结符,无空格;

  近来复习编译原理,语法分析中的自上而下LL(1)分析法,需要构造求出一个多多多文法的FIRST和FOLLOW集,全都构造分析表,利用分析表+一个多多多栈来做自上而下的语法分析(递归下降/预测分析),全都 你是什么FIRST集合FOLLOW集看得我头大。。。

与FOLLOW集相关的有哪几个辅助函数: