编译原理第四语法分析和语法分析程序.pptVIP

  • 3
  • 0
  • 约1.16万字
  • 约 66页
  • 2017-08-22 发布于江苏
  • 举报

编译原理第四语法分析和语法分析程序.ppt

编译原理第四语法分析和语法分析程序

试求下述例子的SLR(1)分析表 S’?S 1. S?CbBA 2. A?Aab 3. A?ab 4. B?C 5. B?Db 6. C?a 7. D?a SLR(1)的局限性 利用Follow集确定归约可能产生的问题 Follow集不考虑上下文 归约需要考虑上下文(有状态的历史) 所以,可能归约出“死前缀”(非活前缀) 所以,需要明确的考察下一个字符可能或应该是什么 加了“?” ,再加“,a”表示后续可能是什么字符 [A????, a] LR(1)的分析表 先求出First集,在LR(0)的基础上 从S’ ? ?S, #产生 S? ?CbBA, #,再产生 C? ?a, b,为什么从#变成b? S ? Cb?BA, #, B ? ?C, ?1 B ? ?Db, ?2 C ? ?a, ?3 D? ?a, ?4 ?1-?4分别是什么? 由LR(1)的DFA到分析表 根据 “,a”逗号后面的a确定action 该移近,还是归约 Goto内容与LR(0)类似 对前部相同的项目, 合并“,a”逗号后面的内容,得到LALR(1) 2. 分析机的工作原理-2.3 分析成功格局 # 分析栈 输入单词流 # # (VT) 匹配,分析成功 分析成功意味着什么? 输入串是分析表所对应文法的句子 2. 分析机的工作原理-2.4 语法错误的识别-1 # 分析栈 输入单词流 Xm..X2 Yn..Y2 Y1 t1 t2 … ti … tn # … t1 … ti … tn … ERR … 分析栈顶Y1为VN 2. 分析机的工作原理-2.4 语法错误的识别-2 # 分析栈 输入单词流 Xm..X2 Yn..Y2 a1 t1 t2 … ti … tn # 分析栈顶a1为VT VT不匹配,Error 3. 预测分析法实例-1文法 G[E]: E→ TE’ E’→ ATE’ |ε T→ FT’ T’→ MFT’ | ε F→ (E) | i A→ + | - M→ * | / G[E]是LL(1)文法吗? 3. 预测分析法实例-2预测分析表 G[E]: E→TE’ E’→ATE’|ε T→FT’ T’→MFT’|ε F→(E)|i A→+|- M→*|/ i + - * / ( ) # E TE’ TE’ E’ ATE’ ATE’ ε ε T FT’ FT’ T’ ε ε MFT’ MFT’ ε ε F i (E) A + - M * / 在分析表单元格中我们有意省略了左侧的非终结符(why?). 实际存储表时,还可用产生式编号作为单元格内容,以进一步减少表的存储空间 1. i + i * i # E 初始化分析栈 i + - * / ( ) # TE’ TE’ # 3. 预测分析法实例 步骤 分析栈 余留输入串 所用产生式 E→TE’ 2. # i + i * i # E’ T 逆向压入分析栈 VN,出栈 E 3. 预测分析法实例 步骤 分析栈 余留输入串 所用产生式 1. #E i + i * i # E→TE’ T→FT’ 2. #E’T i + i * i # i + - * / ( ) # T FT’

文档评论(0)

1亿VIP精品文档

相关文档