编译原理第六章指导.pptVIP

  • 8
  • 0
  • 约5.65千字
  • 约 17页
  • 2017-03-30 发布于湖北
  • 举报
6.4.1 Pascal语言的符号表的管理 Pascal语言的最大特点就是允许嵌套的过程声明。规定Pascal主程序的层数为0,在主程序中声明的标识符(包括过/函标识符)的层数为1,在第i层过/函中声明的标识符(包括形参和局部标识符)的层数为i+1(i≥1)。 用一个Scope栈来实现标识符的嵌套作用域。 Scope栈的每项指向当前仍有效的某层符号表的首项,具体说Scope(0) 指向0层符号表的首项,Scope(i) 指向i层符号表的首项。 删除法实现符号表的局部化的具体做法是:弹掉Scope栈的栈顶元素,同时释放当前层的符号表,即调整符号表区的指针。 假设用?表示层数计数器,用s表示符号表的最后一项的地址,则删除式的局部化实现算法可描述如下: s := Scope[?]-1 ? := ? -1 ; 关于Pascal语言的符号表的实例(删除法) procedure P1( ) var i,j,k:integer; {t1} procedure Q2( ) var a, b: real; procedure R3( ) {t2} var a,b:boolean; {t3} begin R的过程体(a

文档评论(0)

1亿VIP精品文档

相关文档