您好,欢迎访问三七文档
习题讲解消除文法的二义性设置运算符的优先权–定义如下的简单表达式文法:exp-expaddopexp|termaddop-+|-term-termmulopterm|factormulop-*factor-(exp)|id–这样乘法被归在term规则下,而加减法被归在exp规则下,因此在分析树和语法树中加减法将更接近于根,由此也就接受了更低一级的优先权。–这样将算符放在不同的优先权级别中的办法是在语法说明中使用BNF的一个标准方法,称为优先级联(precedencecascade)。消除文法的二义性如何让同级运算从左往右。–可以将表达式文法改为exp-expaddopterm|termaddop-+|-term-termmulopfactor|factormulop-*factor-(exp)|id这样就使得加法和减法左结合,而如果写成exp-termaddopexp|term这样的形式,则会使得它们右结合。3.2S-aSbS|bSaS|εS=aSbS=abSaSbS=abaSbS=absbS=ababS=aSbS=aSbaSbS=abaSbS=ababS=abab3.4R-R’|’R|RR|R*|(R)|a|bR-R’|’R|TermTerm-TermTerm|CC-C*|FactorFactor-(R)|a|b3.213.223.233.243.41一个C语言的文件如下,第四行的if误写成fi:1longgcd(p,q)2longp,q;3{4fi(p%q==0)5returnq;6else7returngcd(q,p%q);8}基于LALR(1)方法的一个编译器的报错情况如下:parseerrorbefore‘return’(line5).是否违反了LR分析的活前缀性质。(能及时发现错误,且不会把出错点后面的符号移进分析栈)例题为字母表{a,b}上的下列每个语言设计一个文法。a)每个a后面至少有一个b跟随的所有串b)a和b的个数相等的所有串c)a和b的个数不相等的所有串a)每个a后面至少有一个b跟随的所有串SabS|bS|b)a和b的个数相等的所有串SaB|bA|AaS|bAABbS|aBBc)a和b的个数不相等的所有串
本文标题:第三章-习题讲解
链接地址:https://www.777doc.com/doc-1785956 .html