描述 - 考虑语法E → E + T|TT → TF|FF → F*|a|b。解决方案步骤 1 - 构建增强语法并对产生式进行编号。(0) E′ → E(1) E → E + T(2) E → T(3) T → TF(4) T → F(5) F → F ∗(6) F → a(7) F → b。步骤 2 - 查找闭包和 goto 函数以构建 LR(0) 项目。方框表示新状态,圆圈表示重复状态。FOLLOW 的计算我们可以找出FOLLOW(E) = {+, $}FOLLOW(T) = {+, a, b, $}FOLLOW(F) = {+, *, a, b, $}输入字符串 a * b + a 的分析 -堆栈 ... 阅读更多
解决方案步骤 1 - 构建增强语法(0) S′ → S(1) S → x A y(2) S → x B y(3) A → q S(4) A → q(5) B → q步骤 2 - 查找闭包和 goto 函数以构建 LR(0) 项目。这里方框表示新状态,圆圈表示重复状态。步骤 3 - FOLLOW 的计算S → x A yFOLLOW(S) = {$} (1)应用 FOLLOW 的规则 (2a)。将 S → x a y 与 A → ... 阅读更多
分析器是编译的第二阶段。分析器将其输入作为从上一阶段生成的标记,即词法分析器阶段,并将它们组合起来以便可以识别它们的语法。例如,考虑 I0I0 - E′ → ∙ E E → ∙ E + T E → ∙ T T → ∙ T ∗ F T → ∙ F F → ∙ (E) F → ∙ id填充移进条目应用 SLR 分析表构建算法的规则 (2a) 于一组 ... 阅读更多