Microsoft PowerPoint - ch7 [Compatibility Mode]
|
|
- 拳努 宗
- 6 years ago
- Views:
Transcription
1 记号流 第七章 分析器 静态检查器 中间代码生成 中间代码生成器 中间代码 代码生成器 本章内容 介绍几种常用的中间表示 (intermediate representation): 后缀表示 图形表示和三地址代码 用语法制导定义和翻译方案来说明源语言的各种构造怎样被翻译成中间形式 后缀表示 E E ope uope (E) id num 表达式 E 的后缀表示可以如下归纳定义 : 表达式 E 后缀式 E id num E 1 ope 2 uope (E) id num E 1 E 2 op E uop E 后缀表示不需要括号 (8 5) + 2 的后缀表示是 后缀表示的最大优点是便于计算机处理表达 式 计算栈输入串 后缀表示不需要括号 (8 5) + 2 的后缀表示是 后缀表示的最大优点是便于计算机处理表达式 后缀表示也可以拓广到表示赋值语句和控制语句, 但很难用栈来描述控制语句的计算 图形表示 语法树是一种图形化的中间表示 有向无环图也是一种中间表示 assign a + assign a uminus uminus c d c d c d b b (a) 语法树 (b) DAG a = ( b + c d) + c d 的图形表示 构造赋值语句语法树的语法制导定义 修改构造结点的函数可生成有向无环图 产生式 语义规则 S id =E S.nptr = mknode( assign, mkleaf (id, id.entry), E.nptr) E E 1 +E 2 E.nptr = mknode( +, E 1.nptr, E 2.nptr) E E 1 E 2 E.nptr = mknode(, E 1.nptr, E 2.nptr) E E 1 E.nptr = mkunode( uminus, E 1.nptr) E (E 1 ) E.nptr = E 1.nptr F id E.nptr = mkleaf (id, id.entry) 1
2 7.1.3 三地址代码 (three-address code) 一般形式 :x = y op z 例表达式 x + y z 翻译成的三地址语句序列是 = y z t 2 = x + 三地址代码是语法树或 DAG 的一种线性表示 例 a=( b+c d)+c d 语法树 = b t 2 = c d t 3 = + t 2 t 4 = c d uminus t 5 = t 3 + t 4 a = t 5 三地址代码是语法树或 DAG 的一种线性表示 例 a=( b+c d)+c d 语法树 DAG = b = b assign t 2 = c d t 2 = c d a + t 3 = + t 2 t 3 = + t 2 + t 4 = c d t 4 = t 3 + t 2 uminus t 5 = t 3 + t 4 a = t c d 4 b a = t 5 本书常用的三地址语句 赋值语句 x = y op z, x = op y 复写语句 x = y 无条件转移 goto L 条件转移 if x relop y goto L 过程调用 param x 和 call p, n 过程返回 return y 索引赋值 x = y[i] 和 x[i] = y 地址和指针赋值 x = &y,x = y 和 x = y 静态单赋值形式 (static single-assignment form) 一种便于某些代码优化的中间表示 和三地址代码的主要区别 所有赋值指令都是对不同名字的变量的赋值三地址代码静态单赋值形式 p = a +b p 1 = a +b q = p c q 1 = p 1 c p = q d p 2 = q 1 d p = e p p 3 = e p 2 q = p + q q 2 = p 3 + q 静态单赋值形式 一种便于某些代码优化的中间表示 和三地址代码的主要区别 所有赋值指令都是对不同名字的变量的赋值 一个变量在不同路径上都定值的解决办法 if (flag) x = 1; else x = 1; y = x a; 改成 if (flag) x 1 = 1; else x 2 = 1; x 3 = (x 1, x 2 ); // 由 flag 的值决定用 x 1 还是 x 2 2
3 本节介绍 为局部名字建立符号表条目 为它分配存储单元 符号表中包含名字的类型和分配给它的存储单元的相对地址等信息 过程中的声明 计算被声明名字的类型和相对地址 P {offset =0} D; S D D ; D D id : T {enter (id.lexeme, T.type, offset); offset = offset + T.width } T integer {T.type = integer; T.width =4} T real {T.type = real; T.width =8} T array [ num ] of T 1 {T.type = array (num.val, T 1.type); T.width = num.val T 1.width} T T 1 {T.type = pointer (T 1.type); T.width =4} 计算被声明名字的类型和相对地址 P {offset =0} D; S D D ; D D id : T {enter (id.lexeme, T.type, offset); offset = offset + T.width } T integer {T.type = integer; T.width =4} T real {T.type = real; T.width =8} T array [ num ] of T 1 {T.type = array (num.val, T 1.type); T.width = num.val T 1.width} T T 1 {T.type = pointer (T 1.type); T.width =4} 作用域信息的保存 所讨论语言的文法 P D; S D D ; D id : T proc id ; D ; S sort var a: ; x: ; readarray var i: ; exchange quicksort var k, v: ; partition var i, j: ; 图 6.14 的程序参数被略去 sort readarray exchange quicksort partition readarray 表头 i sort 空表头 a x readarray exchange quicksort exchange 表头 符号表实例 指向 readarray 指向 exchange quicksort 表头 k v partition partition 3
4 符号表的特点 各过程有各自的符号表 符号表之间有双向链 构造符号表时需要符号表栈 构造符号表需要活动记录栈 语义动作用到的函数 mktable(previous) enter(table, name, type, offset) addwidth(table, width) enterproc(table, name, newtable) sort var a: ; x: ; readarray var i: ; exchange quicksort var k, v: ; partition var i, j: ; 图 6.14 的程序参数被略去 P MD; S {addwidth (top (tblptr), top (offset)); pop(tblptr); pop (offset) } M {t = mktable (nil); push(t, tblptr); push (0, offset)} D D 1 ; D 2 D proc id ; ND 1 ; S {t = top(tblptr); addwidth(t, top(offset) ); pop(tblptr); pop(offset); enterproc(top(tblptr), id.lexeme, t) } D id :T {enter(top(tblptr), id.lexeme, T.type, top(offset)); top(offset) =top(offset) +T.width } N {t = mktable(top(tblptr)); push(t, tblptr); push(0, offset) } P MD; S {addwidth (top (tblptr), top (offset)); pop(tblptr); pop (offset) } M {t = mktable (nil); push(t, tblptr); push (0, offset)} D D 1 ; D 2 D proc id ; ND 1 ; S {t = top(tblptr); addwidth(t, top(offset) ); pop(tblptr); pop(offset); enterproc(top(tblptr), id.lexeme, t) } D id :T {enter(top(tblptr), id.lexeme, T.type, top(offset)); top(offset) =top(offset) +T.width } N {t = mktable(top(tblptr)); push(t, tblptr); push(0, offset) } P MD; S {addwidth (top (tblptr), top (offset)); pop(tblptr); pop (offset) } M {t = mktable (nil); push(t, tblptr); push (0, offset)} D D 1 ; D 2 D proc id ; ND 1 ; S {t = top(tblptr); addwidth(t, top(offset) ); pop(tblptr); pop(offset); enterproc(top(tblptr), id.lexeme, t) } D id :T {enter(top(tblptr), id.lexeme, T.type, top(offset)); top(offset) =top(offset) +T.width } N {t = mktable(top(tblptr)); push(t, tblptr); push(0, offset) } 记录的域名 T record D 记录类型单独建符号表, 作为类型表达式的 主要部分, 域的相对地址从 0 开始 T record LD {T.type = record (top(tblptr)); T.width = top(offset); pop(tblptr); pop(offset)} L {t = mktable(nil); push(t, tblptr);push(0,offset)} record a : ; r : record i : ;... ; k : ; 符号表中的名字 S id := E {p = lookup(id.lexeme); if p!= nil then emit ( p, =,E.place) else error } E E 1 + E 2 {E.place = newtemp(); emit (E.place, =,E 1.place, +,E 2.place)} 4
5 7.3.1 符号表中的名字 E E 1 {E.place = newtemp(); emit (E.place, =, uminus, E 1.place)} E (E 1 ){E.place = E 1.place } E id {p = lookup(id.lexeme); if p!= nil then E.place = p else error } 数组元素的地址计算一维数组 A 的第 i 个元素的地址计算 base +(i low ) w 变换成 i w +(base low w) 减少了运行时的计算 二维数组 A[1,1] A[1,2] A[1,3] A: array[1..2, 1..3] of T A[2,1] A[2,2] A[2,3] 列为主 A[1, 1], A[2, 1], A[1, 2], A[2, 2], A[1, 3], A[2, 3] 行为主 A[1, 1], A[1, 2], A[1, 3], A[2, 1], A[2, 2], A[2, 3] 二维数组 A[1,1] A[1,2] A: array[1..2, 1..3] of T A[2,1] A[2,2] 列为主 i 1 A[1, 1], A[2, 1], A[1, 2], A[2, 2], A[1, 3], A[2, 3] 行为主 A[1, 1], A[1, 2], A[1, 3], A[2, 1], A[2, 2], A[2, 3] base +((i 1 low 1 ) n 2 +(i 2 low 2 )) w (A[i 1, i 2 ] 的地址, 其中 n 2 = high 2 low 2 +1) 变换成 ((i 1 n 2 )+i 2 ) w + (base ((low 1 n 2 )+low 2 ) w) i 2 多维数组下标变量 A[i 1, i 2,, i k ] 的地址表达式 (( ((i 1 n 2 + i 2 ) n 3 + i 3 ) ) n k + i k ) w + base (( ((low 1 n 2 + low 2 ) n 3 + low 3 ) ) n k + low k ) w 数组元素地址计算的翻译方案 下标变量访问的产生式 L id [ Elist ] id Elist Elist, E E 不便于在处理下标表达式时到符号表取信息 为便于写语义动作, 改成等价的 L Elist ] id Elist Elist, E id[e 5
6 所有产生式 S L := E E E + E E (E ) E L L Elist ] L id Elist Elist, E Elist id [ E L id {L.place =id.place; L.offset = null } Elist id [ E {Elist.place = E.place; Elist.ndim =1; Elist.array =id.place } Elist Elis, E { t = newtemp(); m = Elis.ndim +1; emit (t, =,Elis.place,, limit(elis.array, m)); emit (t, =,t, +,E.place); Elist.array = Elis.array; Elist.place = t; Elist.ndim = m} L Elist ] {L.place = newtemp(); emit (L.place, =,base(elist.array),, invariant (Elist.array)); L.offset = newtemp(); emit (L.offset, =,Elist.place,,width(Elist.array))} E L{if L.offset == null then / L 是简单变量 / E.place = L.place else begin E.place = newtemp(); emit (E.place, =,L.place, [, L.offset, ] ) } E E 1 + E 2 {E.place = newtemp(); emit (E.place, =,E 1.place, +,E 2.place)} E (E 1 ){E.place = E 1.place } S L = E {if L.offset == null then / L 是简单变量 / emit (L.place, =,E.place) else emit (L.place, [, L.offset, ], =, E.place)} L.place =x L.offset = null x = y 20 = + z Elist.place =y Elist.ndim =1 Elist.array =A A [ A[10, 20] x = t 4 S := t 4 = t 2 [t 3 ] E.place =t 4 t 2 = c t 3 = 4 L.place =t 2 L.offset =t 3 Elist.place = Elist.ndim =2 Elist.array =A E.place =y L.place =y L.offset = null, y x := A[ y, z ] 的注释分析树 注 :c =A 84 E.place =z L.place =z L.offset = null z ] 类型转换 例 x=y+i j (x 和 y 的类型是 real,i 和 j 的类型是 integer) 中间代码 =iint j t 2 = inttoreal t 3 = y real+ t 2 x=t 3 E E 1 + E 2 E.place = newtemp(); if E 1.type == integer && E 2.type == integer then begin emit (E.place, =,E 1.place, int+, E 2.place); E.type = integer else if E 1.type == integer && E 2.type == real then begin u = newtemp(); emit (u, =, inttoreal,e 1.place); emit (E.place, =,u, real+, E 2.place); E.type = real 6
7 7.4.1 布尔表达式 布尔表达式有两个基本目的 计算逻辑值 在控制流语句中用作条件表达式 本节所用的布尔表达式文法 B B or B B and B notb (B ) E relop E true false 布尔表达式 布尔表达式的完全计算 值的表示数值化 其计算类似于算术表达式的计算 布尔表达式的 短路 计算 B 1 or B 2 定义成 if B 1 then true else B 2 B 1 and B 2 定义成 if B 1 then B 2 else false 用控制流来实现计算, 即用程序中的位置来表示值, 因为布尔表达式通常用来决定控制流走向 两种不同计算方式会导致程序的结果不一样 控制流语句的翻译 S if B then S 1 if B then S 1 else S 2 while B do S 1 S 1 ; S 2 B.true, B.false, S.begin, S.next 继承属性 为便于翻译, 给指令加标号, 可通过调用 newlabel() 产生新标号 (a) if-then S.begin: goto S.begin (c) while-do goto S.next B.false: (b) if-then-else S 1.next: (d) S 1 ; S 2 (b) 中若 后用 goto S 1.next, S 1.next 为指令 goto S.next, 则 产生冗余跳转指令 B.false: goto S.next B.false: (a) if-then S.begin: (b) if-then-else S 1.next: (c) while-do goto S.begin (d) S 1 ; S 2 S if { B.true = newlabel(); B.false = S.next;} B then {S 1.next = S.next;} (a) if-then S 1 {S.code = gen(b.true, : ) S 1 7
8 能否仅使用综合属性? 解决办法 回填技术 1 从概念上说 把跳转到同一个标号的指令放到同一张指令表中 等目的标号确定时再把目的 (a) if-then 标号填写到该表中的各条指令中 2 从写翻译方案的角度 非终结符 B 的综合属性 truelist 和 falselist 用来管理布尔表达式的跳转代码 等跳转的目的标号确定时通过过程调用来回填 S if { B.true = newlabel(); B.false = S.next;} B then {S 1.next = S.next;} (a) if-then S 1 {S.code = gen(b.true, : ) S 1 S if B then MS 1 { backpatch(b.truelist, M.instr); // 回填 S.nextlist = merge(b.falselist, S 1.nextlist); } M { M.instr = nextinstr;} S if {B.true = newlabel(); B.false = newlabel();} B then { S 1.next = S.next;} goto S.next B.false: (b) if-then-else S 1 else { S 2.next = S.next;}S 2 { S.code = gen(b.true, : ) S 1.code gen( goto, S.next) gen(b.false, : ) S 2.code} 采用回填的翻译方案 goto S.next B.false: (b) if-then-else S if B then M 1 S 1 N else M 2 S 2 { backpatch(b.truelist, M 1.instr); backpatch(b.falselist, M 2.instr); S.nextlist = merge(merge(s 1.nextlist, N.nextlist), S 2.nextlist); } M { M.instr = nextinstr;} N { N.nextlist=makeList(nextinstr); emit( goto_ );} S {S.begin = newlabel(); } while { B.true = newlabel(); B.false = S.next;} B do { S 1.next = S.begin;}S 1 S.begin: goto S.begin (c) while-do { S.code = gen(s.begin, : ) gen(b.true, : ) S 1.code gen( goto, S.begin)} 采用回填的翻译方案 S.begin: goto S.begin (c) while-do S while M 1 B do M 2 S 1 { backpatch(s 1.nextlist, M 1.instr); backpatch(b.truelist, M 2.instr); S.nextlist = B.falselist; emit( goto, M 1.instr);} M { M.instr = nextinstr;} 8
9 S {S 1.next = newlabel(); } S 1 ; { S 2.next = S.next;}S 2 { S.code = S 1.code gen(s 1.next, : ) S 2 S 采用回填的翻译方案 1.next: S S 1 ; MS 2 { backpatch(s 1.nextlist, M.instr); S.nextlist = S 2.nextlist;} M { M.instr = nextinstr;} (d) S 1 ; S 布尔表达式的控制流翻译 如果 B 是 a < b 的形式, 那么代码是 : if a < b goto B.true goto B.false 例表达式 a < b or c < d and e < f 是 : if a < b goto L true goto L 1 L 1 : if c < d goto L 2 goto L false L 2 : if e < f goto L true goto L false B { B 1.true = B.true; B 1.false = newlabel(); } B 1 or {B 2.true = B.true; B 2.false = B.false;} B 2 { = B 1.code gen(b 1.false, : ) B 2 B { B 1.true = B.false; B 1.false = B.true;} not B 1 { = B 1 B { B 1.true = newlabel(); B 1.false = B.false;} B 1 and { B 2.true = B.true; B 2.false = B.false;}B 2 { = B 1.code gen(b 1.true, : ) B 2 B { B 1.true = B.true; B 1.false = B.false;} (B 1 ) { = B 1 B E 1 relop E 2 { = E 1.code E 2.code gen( if, E 1.place, relop.op, E 2.place, goto, B.true) gen( goto, B.false)} B true { = gen( goto, B.true)} B false { = gen( goto, B.false)} 9
10 布尔表达式的回填 B B 1 or MB 2 { backpatch(b 1.falselist, M.instr); B.falselist = B 2.falselist; B.truelist = merge(b1.truelist, B2.truelist);} M { M.instr = nextinstr;} B B 1 and MB 2 { backpatch(b 1.truelist, M.instr); B.truelist = B 2.truelist; B.falselist=merge(B 1.falselist, B 2.falselist); } B not B 1 { B.truelist = B 1.falselist; B.falselist = B 1.truelist;} 布尔表达式的回填 B ( B 1 ) { B.truelist = B 1.truelist; B.falselist = B 1.falselist;} B E 1 relop E 2 { B.truelist = makelist(nextinstr); B.falselist = makelist(nextinstr+1); emit( if, E 1.place, relop.op, E 2.place, goto _ ); emit( goto _ ); } B true { B.truelist = makelist(nextinstr); B.falselist = null; emit( goto _ ); } B false { B.falselist = makelist(nextinstr); B.truelist = null; emit( goto _ ); } 开关语句的翻译 switch E begin case V 1 : S 1 case V 2 : S 2 case V n -1 : S n 1 default: S n 分支数较少时 t=e L n-2 :ift!=v n-1 goto L n-1 if t!= V 1 goto L 1 S n -1 S 1 goto next goto next L n-1 : S n L 1 : if t!=v 2 goto L 2 next: S 2 goto next L 2 : 分支较多时, 将分支测试代码集中在一起, 便于生成较好的分支测试代码 t=e L n : S n goto test goto next L 1 : S 1 test: if t == V 1 goto L 1 goto next if t == V 2 goto L 2 L 2 : S 2 goto next if t == V n-1 goto L n-1 gotol n L n-1 : S n -1 next: goto next 中间代码增加一种 case 语句, 便于代码生成器对它进行特别处理 test: case V 1 L 1 case V 2 L 2 case V n-1 L n-1 case t L n next: 一个生成 ( 两种优化 ): 用二分查找确定该执行的分支 建立入口地址表, 直接找到该执行的分支的例子见第 244 页习题
11 7.4.5 过程调用的翻译 S call id (Elist) Elist Elist, E Elist E 过程调用 id(e 1, E 2,,E n ) 的中间代码结构 E 1.place = E 1 E 2.place = E 2 E n.place = E n param E 1.place param E 2.place param E n.place call id.place, n S call id (Elist) { 为长度为 n 的队列中的每个 E.place, emit( param, E.place); emit( call, id.place, n)} Elist Elist, E { 把 E.place 放入队列末尾 } Elist E { 将队列初始化, 并让它仅含 E.place} 本章要点 中间代码的几种形式, 它们之间的相互转换 符号表的组织和作用域信息的保存 数组元素定址的翻译方案, 布尔表达式的两种不同实现方式 赋值语句和各种控制流语句的中间代码格式和生成中间代码的翻译方案 过程调用的中间代码格式和生成中间代码的翻译方案 例题 1 Pascal 语言的标准将 for 语句 for v := initial to final do stmt 定义成和下面序列有同样的含义 : begin := initial; t 2 := final; if <= t 2 then begin v:= ; stmt; while v <> t 2 do begin v := succ(v); stmt 例题 1 Pascal 语言的标准将 for 语句 for v := initial to final do stmt 能否定义成和下面序列有同样的含义? begin := initial; t 2 := final; v:= ; while v <= t 2 do begin stmt; v := succ(v) 11
12 例题 1 Pascal 语言的标准将 for 语句 for v := initial to final do stmt 能否定义成和下面序列有同样的含义? begin := initial; t 2 := final; v:= ; while v <= t 2 do begin stmt; v := succ(v) final 为最大整数时, succ(final) 会导致越界错误 例题 1 Pascal 语言 for 语句 for v := initial to final do stmt 的中间代码结构如下 : =initial t 2 =final if >t 2 goto L1 v= L2: stmt if v == t 2 goto L1 v=v+1 goto L2 L1: 例题 2 C 语言的 for 语句有下列形式 for (e 1 ;e 2 ;e 3 )stmt 它和 e 1 ; while (e 2 )do begin stmt; e 3 ; 有同样的语义 例题 2 C 语言的 for 语句 for (e 1 ;e 2 ;e 3 )stmt 的中间代码结构如下 e 1 L1: e 2 L2: e 3 goto L1 stmt goto L2 假转, 由外层语句决定真转 例题 3 Pascal 语言 var a,b : array[1..100] of integer; a:=b // 允许数组之间赋值若 a 和 b 是同一类型记录, 也允许 C 语言数组类型不行, 结构体类型可以 为这种赋值选用或设计一种三地址语句, 它要便于生成目标代码 例题 3 Pascal 语言 var a,b : array[1..100] of integer; a:=b // 允许数组之间赋值若 a 和 b 是同一类型记录, 也允许 仍然用中间代码复写语句 x=y, 在生成目标代码时, 必须根据它们类型的 size, 产生一连串的值传送指令 12
13 例题 4 下面的翻译方案使用了变量 offset, 请重写该翻译方案, 它完成同样的事情, 但只使用文法符号的属性, 而不使用变量 offset P {offset = 0} D D D ; D D id : T { enter(id.lexeme, T.type, offset); offset = offset + T.width } T integer {T.type = integer; T.width = 4 } T real {T.type = real; T.width = 8 } 例题 4 P {D.offset1 = 0} D { P.offset = D.offset2} D {D1.offset1 = D.offset1 } D1 ; {D2.offset1 = D1.offset2 }D2 {D.offset2 = D2.offset2 } D id :T{enter ( id.lexeme, T.type, D.offset1); D.offset2 = D.offset1 + T.width } T integer {T.type = integer; T.width = 4 } T real {T.type = real; T.width = 8 } 13
Microsoft PowerPoint - ch7.ppt [兼容模式]
第七章 中间代码生成 静态中间代码记号分析检查代码中间生成流器器生成代码器器本章内容 介绍几种常用的中间表示 (intermediate representation): 后缀表示 图形表示和三地址代码 用语法制导定义和翻译方案来说明源语言的各种 用语法制导定义和翻译方案来说明源语言的各种构造怎样被翻译成中间形式 7.1.1 后缀表示 7.1 中间语言 E E ope uope (E) id num
More informationMicrosoft PowerPoint - ch6 [Compatibility Mode]
第 6 章 中间代码生成 记号流 分析器 本章内容 静态检查器 中间代码生成器 中间代码 代码生成器 介绍几种常用的中间表示 : 后缀表示 图形表示和三地址代码 用语法制导定义和翻译方案来说明源语言的各种构造怎样被翻译成中间形式 6.1.1 后缀表示表达式 E 的后缀表示可以如下归纳定义 如果 E 是变量或常数, 那么 E 的后缀表示就是 E 本身 如果 E 是形式为 E 1 ope 2 的表达式,
More informationMicrosoft PowerPoint - ir
中间语言与中间代码生成 张昱 编译原理和技术 0551-63603804,yuzhang@ustc.edu.cn 中国科学技术大学计算机科学与技术学院 记号流 本章内容 分析器 语法树 静态检查器 语法树 中间中间代码代码生成器 代码生成器 符号表本章内容 中间语言 : 常用的中间表示 (Intermediate Representation) 后缀表示 图表示 三地址代码 LLVM IR 基本块和控制流图
More information编译原理与技术
编译原理与技术 中间代码生成 2015/11/7 编译原理与技术 讲义 1 中间代码生成 - 布尔表达式翻译 - 控制流语句翻译 2015/11/7 编译原理与技术 讲义 2 布尔表达式的翻译 布尔表达式文法 G 4 E E 1 or E 2 E 1 and E 2 not E 1 ( E 1 ) id 1 relop id 2 true false id 3 布尔运算符 or and 和 not(
More information再版前言
第七章中间代码生成 在第一章已经介绍, 编译器的前端把源程序翻译成中间表示, 后端从中间代码产生目标代码, 与目标语言有关的细节尽可能限制在后端 使用独立于机器的中间形式的好处是 : 1. 再目标 (retargeting) 比较容易 把针对新机器的后端加到现成的前端上, 可以得到另一种机器的编译器 2. 独立于机器的代码优化器可用于这种中间表示 第九章将介绍这种代码优化 因此, 虽然可以把源程序直接翻译并生成目标代码,
More information编译原理 Compiler Principles 第六章中间代码生成 湖南大学信息科学与工程学院 软件工程系杨金民 2018
编译原理 Compiler Principles 第六章中间代码生成 湖南大学信息科学与工程学院 软件工程系杨金民 2018 什么叫语法制导的翻译 求表达式的值 id 1 + id 2 *id 3 4 + 3 * 5 文法 :E E + E E * E id E 5 E 1 + E 4 id 1 E 2 * E 3 id 2 id 3 四者的语义相同 对于计算机执行的指令流 : E 1 = id 1
More informationPowerPoint Presentation
第六章中间代码生成 许畅 南京大学计算机系 2018 年春季 本章内容 中间代码表示 表达式的有向无环图 DAG 三地址代码 :x = y op z 类型检查 类型 类型检查 表达式的翻译 中间代码生成 控制流 回填 2 编译器前端的逻辑结构 前端是对源语言进行分析并产生中间表示 处理与源语言相关的细节, 与目标机器无关 前端后端分开的好处 : 不同的源语言 不同的机器可以得到不同的编译器组合 3
More informationMicrosoft PowerPoint - 6 Intermediate-Code Generation.pptx
第六章中间代码生成 陈林 本章内容 中间代码表示 抽象语法树 三地址代码 中间代码生成 表达式 类型检查 控制流 编译器前端的逻辑结构 静态类型检查和中间代码生成的过程都可以用语法制导的翻译来描述和实现 对于抽象语法树这种中间表示的生成, 第五章已经介绍过 表达式的有向无环图 语法树中, 公共子表达式每出现一次, 就有一个对应的子树 表达式的有向无环图 (Directed Acyclic Graph,DAG)
More information内容提要 1 语法制导翻译语法制导定义 S 属性定义的自下而上计算 L 属性定义的自上而下计算 L 属性定义的自下而上计算 2 中间代码生成中间语言声明语句赋值语句布尔表达式和控制流语句
编译原理 第七章语法制导翻译及中间代码生成 方徽星 扬州大学信息工程学院 (505) fnghuixing@yzueducn 2018 年 6 月 内容提要 1 语法制导翻译语法制导定义 S 属性定义的自下而上计算 L 属性定义的自上而下计算 L 属性定义的自下而上计算 2 中间代码生成中间语言声明语句赋值语句布尔表达式和控制流语句 11 语法制导定义 (Syntx-Directed Definition)
More informationMicrosoft PowerPoint - L12-v3.pptx
Lecture 12: 中间代码生成 -II Xiaoyuan Xie 谢晓园 xxie@whu.edu.cn 计算机学院 E301 控制流翻译 控制流语句的翻译 文法 B表示布尔表达式 S代表语句 S if (B) S1 S if (B) S1 else S2 S while (B) S1 代码的布局见右图 继承属性 B.true B为真的跳转目标 B.false B为假的跳转目标 S.next
More information大侠素材铺
编译原理与技术 语法制导翻译 Ⅱ 计算机科学与技术学院 李诚 22/10/2018 Announcement Tutorial on Thursday (25/10/2018) 3B201, Class time Assignment review Q & A Cheng @ Compiler Fall 2018, USTC 2 主要内容 源程序 词法分析器 token 语法分析器 分析树 语义分析
More informationMicrosoft PowerPoint - ch4.ppt [兼容模式]
第四章 语法制导的翻译 本章内容 1 介绍语义描述的一种形式方法: 语法制导的翻译 (syntax-directed translation), 它包括两种具体形式 语法制导的定义 (syntax-directed definition) E E 1 + T E.code = E 1.code T.code + 可读性好, 更适于描述规范 翻译方案 (translation scheme) E E
More informationCC213
: (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,
More information<4D F736F F D B1E0D2EBD4ADC0EDA3A8B5DA32B0E6A3A9BFB1CEF3B1ED2E646F63>
编译原理 ( 第 2 版 ) 勘误表 2008-8-31 1 第 2 页倒数第 2 行改成 : 分隔单词的空格通常在词法分析时被删去 2 第 3 页图 1.2 改成 : = = id, 1 + id, 1 + id, 2 id, 2 id, 3 60 id, 3 inttofloat (a) (b) 60 图 1.2 语义分析插入了类型转换 3 第 16 页倒数第 9 行开始的那段改成 : 上一节提到,
More informationebook14-4
4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s
More information编译原理原理与技术
编译原理与技术 语法制导翻译 2015/10/12 编译原理与技术 讲义 1 属性文法 语法制导翻译 S- 属性定义 L- 属性定义 语法制导定义与翻译方案 自底向上翻译 S- 属性定义自底向上计算 自底向上计算继承属性 自顶向下翻译 2015/10/12 编译原理与技术 讲义 2 属性文法 属性文法 (Attributed Grammar) 上下文无关文法 + 属性 + 属性计算规则 属性 - 用来描述文法符号的语义特征,
More informationMicrosoft PowerPoint - L9-v3.pptx
Lecture 9: 语法制导的翻译 -I Xiaoyuan Xie 谢晓园 xxie@whu.edu.cn 计算机学院 E301 Introduction 9.1 概述 语义分析在编译程序中的作用 词法分析 目标代码生成 语法分析 中间代码优化 语义分析 分析 中间代码生成 合成 语法和语义的区别 语法 是描述一个合法定义的程序结构的规则 例如 id( ) 语义 说明一个合法定义的程序的含义
More informationMicrosoft PowerPoint - syntaxdirect
本章内容 语法制导的翻译 编译原理和技术 张昱 055-63603804,yuzhang@ustc.edu.cn 中国科学技术大学计算机科学与技术学院 语义描述的一种形式方法 语法制导的定义 (syntax-directed definition) + E.code = E.code.code + 可读性好, 更适于描述规范 翻译方案 (translation scheme) + { pr + 陈述了实现细节
More information修改图 7.5 中计算声明名字的类型和相对地址的翻译方案, 允许名字表而不是单个名字出现在形式为 D id : T 的声明中 即允许 a, b, c : integer 这种形式的变量声明 下面是一个 C 语言程序 : long f1( i
2013.12.8 7.4 修改图 7.5 中计算声明名字的类型和相对地址的翻译方案, 允许名字表而不是单个名字出现在形式为 D id : T 的声明中 即允许 a, b, c : integer 这种形式的变量声明 2013.12.1 6.12 下面是一个 C 语言程序 : long f1( i ) long i; { return(i 10); long f2(long i) { return(i
More information.size main,.lfe1-main.local b.comm b,4,4.comm c,4,4.ident "GCC: (GNU) egcs /Linux (egcs release)" 修改图 6.5 中计算声明名字
实验 : 1 阅读并理解 PL/0 语言前端编译器中的词法分析器, 扩展 PL/0 语言及其编译器, 以增加对上述多行注释的支持 2 [11 月 8 日开始检查 ] 参考 flex-examples, 将 PL/0 编译器中的词法分析部分的实现改造成两种构造方式 : 手工构造 ( 即使用原先在 pl0.c 中定义的 getch 和 getsym 函数 ) 用 flex 自动生成词法分析程序 ( 即编写描述
More informatione bug 0 x=0 y=5/x 0 Return 4 2
e 1 4 1 4 4.1 4.2 4.3 4.4 4.5 e 2 4.1 bug 0 x=0 y=5/x 0 Return 4 2 e 3 4 3 e 4 (true) (false) 4 4 e 5 4 5 4.2 1 G= V E V={n1,n2,,n m } E={e1,e2,,e p } e k ={n i,n j }, n i,n j V e 6 4.2 4 6 1 e 3 n 1 e
More informationOOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP
More information大侠素材铺
编译原理与技术 词法分析 Ⅱ 计算机科学与技术学院李诚 13/09/2018 主要内容 记号 (token) 源程序 词法分析器 getnexttoken 语法分析器 符号表 词法分析器的自动生成 正则表达式 NFA DFA 化简的 DFA 词法分析器的生成器 Lex: flex jflex Fst lexicl nlyzer genertor 2/51 Regulr Expr to NFA 正则表达式
More information2006..,1..,2.,.,2..,3..,3 22..,4..,4 :..,5..,5 :..,5..,6..,6..,8..,10 :..,12..,1..,6..,6..,2 1907..,5,:..,1 :..,1 :..,1 :..,2..,2..,3 :..,1 :..,1..,1.
2006 2005..,5..,2 20 20..,2..,3..,3..,3..,3..,3..,5..,5 :..,8 1861 :..,11..,12 2005..,2..,1..,2..,1..,4..,6..,6 :..,10..,4..,4..,5..,1 :..,4..,6..,3..,4 1910..,5 :1930..,1..,4..,2 :..,2..,2..,1 19.., 1..,1..,1..,3..,3
More informationMicrosoft PowerPoint - ch4.ppt [兼容模式]
第四章语法制导的翻译 本章内容 1 介绍语义描述的一种形式方法 : 语法制导的翻译 (sytax-directed traslatio), 它包括两种具体形式 语法制导的定义 (sytax-directed defiitio) E.code = E 1.code.code 可读性好, 更适于描述规范 翻译方案 (traslatio scheme) { prit } 陈述了实现细节 ( 如语义规则的计算时机
More information2011-论文选集-2.cdr
! "#$# $$ "#$#$$" " $% &%!$ $ "#$$ " ! "!#!$ %" #& # ( #$ ) )& )# )$ ** "& ")! ! "" # $% & &( ( # ) )** )*+ )*$ )) ))" ),+ )," -./ ) ) ) " )++ )+" )%,, !"#" $ ! " #$% & ( & ) % #$% #$% & * #$%#$% #$% (
More informationOOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double
More information, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1
21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414
More informationuntitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
More informationOpen topic Bellman-Ford算法与负环
Open topic Bellman-Ford 2018 11 5 171860508@smail.nju.edu.cn 1/15 Contents 1. G s BF 2. BF 3. BF 2/15 BF G Bellman-Ford false 3/15 BF G Bellman-Ford false G c = v 0, v 1,..., v k (v 0 = v k ) k w(v i 1,
More information第5章修改稿
(Programming Language), ok,, if then else,(), ()() 5.0 5.0.0, (Variable Declaration) var x : T x, T, x,,,, var x : T P = x, x' : T P P, () var x:t P,,, yz, var x : int x:=2. y := x+z = x, x' : int x' =2
More informationchap07.key
#include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,
More information第三节 软件测试的过程与策略
...1...4...9...17...25...29...34...40...46...55...65...73 1 2 3 4 5 6 7 8 9 10 11 1 12 13 1 ABCD 2 A B C D 3 ABCD 4 A1/2 B1/3 C1/4 D2/3 5 % A20 B30 C40 D50 6 A B C D 7 A B C D / 8 A B C D 9 A B C D 10
More informationMicrosoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
More information( ) 001 ( 131 ) : 1- ISBN X/I 1091 :
( ) 001 ( 131 ) 850 1168 32 9. 125 4 191 2001 12 1 2001 12 1 : 1- ISBN 7-224-05898-X/I 1091 :13.00 2 ,,,,,,,,,,,,,,,,,,,,?,, 3 ,,?!,,,,,,,?,,,,,,,,,,,!!!!,,,,,,,,!,,?!,,!,,, 1988 10 11 4 ,,,,,,,,,,,,,,,,,!,,,
More informationMicrosoft PowerPoint - 5 Syntax-Directed Translation.pptx
第五章语法制导的翻译 陈林 引言 使用上下文无关文法引导语言的翻译 CFG 的非终结符号代表了语言的某个构造 程序设计语言的构造由更小的构造组合而成 一个构造的语义可以由小构造的含义综合而来 比如 : 表达式 x+y 的类型由 x y 的类型和运算符 + 决定 也可以从附近的构造继承而来 比如 : 声明 int x; 中 x 的类型由它左边的类型表达式决定 语法制导定义和语法制导翻译 语法制导定义
More informationOOP with Java 通知 Project 4: 4 月 19 日晚 9 点
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d
More informationMicrosoft PowerPoint - 7-Semantic&IR.ppt
7.1 中间表示的概念 第七章 : 语义分析和中间代码生成 2008 年秋 抽象语法树 vs 类似目标代码 是否使用目标机和运行时环境的详细信 息 数据类型的尺寸 ; 寄存器 变量的存储位置 前端 IR 后端 是否使用符号表中的全部信息 作用域 嵌套层次 变量的偏移量 其它用处 : 用于代码分析以产生高效目标代码 用于多目标编译 (retargetable) 中间代码生成 中间代码生成位于词法分析和语法分析之后,
More information帝国CMS下在PHP文件中调用数据库类执行SQL语句实例
帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)
More information9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B
25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018
More information38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民
1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平
More information无类继承.key
无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255
More information! #$ % & ( ) % & ( ) % & ( ) % & ( ) % & ( ) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # ################################################### % & % & !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
More information《米开朗琪罗传》
! " # ! """"""""""""""""""" """"""""""""""""" """""""""""""""" $% """"""""""""" &# """"""""""""""" %# """"""""""""""" # """""""""""""""!$% """""""""""""""!&!! # $$$$$$$$$$$$$$$$$$ $$$$$$$$$!"#!%& (! "
More information,,!!!?,?,!,,,,,,,,,,!,,, : 1 ,,,,!, :, :,?,,,, 2 ( 1 ) 7 0 ( 11 ) ( 12 ) ( 13 ) ( 14 ) ( 15 ) ( 17 ) ( 18 ) ( 19 ) ( 21 ) ( 22 ) ( 23 ) ( 25 ) ( 26 ) ( 27 ) ( 29 ) ( 30 ) ( 31 ) ( 32 ) ( 33 ) ( 34 ) (
More informationFY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
More informationMicrosoft PowerPoint - 7-Semantic_IR12.ppt [兼容模式]
中间代码生成 第七章 : 语义分析和中间代码生成 赵银亮 词法分析 语法分析 中间代码生成 中间代码的表示形式有多种 : 逆波兰表示三地址码 ( 三元式 四元式 ) 抽象语法树 P- 代码 属性文法是实现中间代码生成的常用手段 2012 本章内容 : 几种中间表示说明语句的翻译简单算术表达式和赋值句到四元式的翻译布尔表达式到四元式的翻译控制语句的翻译数组元素的引用过程调用 7.1 中间表示的概念 抽象语法树
More information试卷
( 试 题 中 凡 主 观 题 答 案 意 思 对 即 可, 若 与 答 案 不 同 而 言 之 成 理, 亦 可 酌 情 给 分 ) 一 ~ 二 (45 分 ) 1.B( 原 文 并 未 说 网 络 社 会 生 态 系 统 的 核 心 与 现 实 社 会 生 态 系 统 的 核 心 不 同 ) 2.D( 服 务 网 络 收 集 到 的 数 据 要 和 关 系 网 络 的 数 据 整 合 在 一 起,
More informationCC213
: (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620
More informationTwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc
TwinCAT 2001.12.11 TwinCAT 1. TwinCAT... 3 2.... 4... 4...11 3. TwinCAT PLC... 13... 13 PLC IEC 61131-3... 14 4. TwinCAT... 17... 17 5. TwinCAT... 18... 18 6.... 19 Maschine.pro... 19... 27 7.... 31...
More information科学计算的语言-FORTRAN95
科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造
More informationVHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2
VHDL (Statements) VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2 (Assignment Statement) (Signal Assignment Statement) (Variable Assignment
More informationSDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
More information1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10
Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1
More informationPowerPoint Presentation
Visual Basic 2005 學 習 範 本 第 7 章 陣 列 的 活 用 7-1 陣 列 當 我 們 需 要 處 理 資 料 時, 都 使 用 變 數 來 存 放 資 料 因 為 一 個 變 數 只 能 代 表 一 個 資 料, 若 需 要 處 理 100 位 同 學 的 成 績 時, 便 要 使 用 100 個 不 同 的 變 數 名 稱, 這 不 但 會 增 加 變 數 名 稱 命 名
More informationMicrosoft PowerPoint - SyntaxDirectedTranslation [Compatibility Mode]
Outline rror Handling Syntax-Directed Translation xtensions of CFG for parsing Precedence declarations rror handling Semantic actions Constructing a parse tree Originated from Prof. Aiken CS 14 Modified
More information( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)
( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.
More information《计算概论》课程 第十九讲 C 程序设计语言应用
计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout
More information27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f
27 1 Vol.27 No.1 CEMENTED CARBIDE 2010 2 Feb.2010!"!!!!"!!!!"!" doi:10.3969/j.issn.1003-7292.2010.01.011 OPC 1 1 2 1 (1., 412008; 2., 518052), OPC, WinCC VB,,, OPC ; ;VB ;WinCC Application of OPC Technology
More informationMicrosoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]
Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];
More information团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生
共 青 团 工 作 简 报 2011 年 第 1 期 共 青 团 大 连 海 洋 大 学 委 员 会 团 学 要 闻 : 导 读 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 我 校 在 大 连 市 大 学 生 创 新 创 意 作 品 大 赛 中 取 得 佳 绩 校 团 委 召 开 学 生 干 部 思 想 动 态 座 谈 会 校 团 委 组 织 开 展 弘 扬 雷 锋
More informationMicrosoft PowerPoint - 7-Semantic_IR09.ppt
中间代码生成 第七章 : 语义分析和中间代码生成 中间代码生成位于词法分析和语法分析之后, 是代码生成中的一个阶段 ; 中间代码的形式很多, 如逆波兰记号 抽象语法树 三地址码 ( 三元式 四元式 ) P- 代码, 等等 属性文法是用于中间代码生成的常用的方法 赵银亮 本章内容 : 1. 中间表示形式 2. 说明语句的翻译 3. 简单算术表达式和赋值句到四元式的翻译 4. 布尔表达式到四元式的翻译
More informationVB程序设计教程
高 等 学 校 教 材 Visual Basic 程 序 设 计 教 程 魏 东 平 郑 立 垠 梁 玉 环 石 油 大 学 出 版 社 内 容 提 要 本 书 是 按 高 等 学 校 计 算 机 程 序 设 计 课 程 教 学 大 纲 编 写 的 大 学 教 材, 主 要 包 括 VB 基 础 知 识 常 用 程 序 结 构 和 算 法 Windows 用 户 界 面 设 计 基 础 文 件 处
More informationMicrosoft PowerPoint - 06 - ShengYang Presentation Slides_240609
沈 阳 水 务 一 体 化 发 展 的 探 索 水 允 办 简 行 各 资 许 表 要 业 位 很 源 我 示 介 的 嘉 荣 周 代 热 绍 基 宾 幸, 表 烈 一 本 再 女 并 沈 的 下 情 次 士 有 阳 祝 沈 况 来 : 们 机 水 贺 阳 到! 会 务 的 美 先 下 与 集 城 丽 生 面 各 团 市 的, 们 位 对 概 狮 : 我 交 活 况 城 向 流 动 和 大 参 在
More information<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>
1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)
More informationFun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc
References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2
More informationA B C D E A B C F A C. D F. A. B. C. D. E. F.
... 4. 5. 6. 7. A B A C D B E F A, B. C, D. E, F. A. B. C. D. E. F. A B C D E A B C F A C. D F. A. B. C. D. E. F. 40 60 A 0% B GB 8566 88 8 C D E A. B. C E. A. B. C. D. E. 70% GB 8566 88 8 4 A B C D E
More information元 [ 所 17-1-2-3] IA27 ( D ) 下 列 何 項 情 況, 其 夫 妻 所 得 可 免 合 併 申 報? (A) 當 年 度 結 婚 (B) 當 年 度 離 婚 (C) 妻 58 歲, 夫 62 歲 無 所 得 受 其 子 扶 養 (D) 以 上 皆 是 [ 所 17-1-1]
綜 合 所 得 稅 選 擇 題 題 庫 IA01 ( A ) 非 中 華 民 國 境 內 居 住 之 個 人, 取 有 中 華 民 國 境 內 銀 行 給 付 之 活 期 儲 蓄 存 款 利 息 所 得, 依 據 所 得 稅 法 規 定, 應 否 課 徵 綜 合 所 得 稅? (A) 應 就 源 扣 繳 (B) 全 年 在 27 萬 元 以 下 免 納 所 得 稅 (C) 應 該 辦 理 結 算 申
More informationMicrosoft PowerPoint - typecheck
本章内容 类型检查 编译原理和技术 张昱 0551-63603804,yuzhang@ustc.edu.cn 中国科学技术大学计算机科学与技术学院 记号流 语法分析器 语法树语法树类型中间代码中间检查器生成器表示 符号表 语义检查中最典型的部分 类型检查 类型系统 类型检查 符号表的作用 多态函数 重载 其他的静态检查 ( 不详细介绍 ) 控制流检查 唯一性检查 关联名字检查 张昱 : 编译原理和技术
More information汇集全球21位医生的经验和智慧,总结出最实用的专业建议,这些都是最值得你牢记的健康提醒
彙 集 全 球 21 位 醫 生 的 經 驗 和 智 慧, 總 結 出 最 實 用 的 專 業 建 議, 這 些 都 是 最 值 得 你 牢 記 的 健 康 提 醒 top1. 不 是 每 個 人 都 適 合 做 近 視 矯 行 手 術, 除 非 你 在 手 術 前 已 經 持 續 穩 定 地 佩 戴 了 一 年 以 上 的 近 視 眼 鏡 或 者 隱 形 眼 鏡 如 果 你 時 摘 時 戴 眼 鏡,
More information1 行 业 发 展 不 平 衡 我 国 房 地 产 中 介 服 务 业 起 步 较 晚, 专 业 分 工 程 度 和 国 外 发 达 国 家 相 比 还 有 很 大 差 距 房 地 产 中 介 服 务 行 业 的 发 展 水 平 与 房 地 产 开 发 行 业 的 市 场 化 水 平 密 切 相 关
房 地 产 中 介 服 务 : 仍 处 于 成 长 期, 市 场 空 间 巨 大 作 者 : 庞 增 华 房 地 产 中 介 服 务 业 内 的 企 业 包 括 依 法 设 立 并 具 备 房 地 产 中 介 资 格 的 房 地 产 顾 问 策 划 房 地 产 代 理 销 售 房 地 产 评 估 房 地 产 经 纪 等 中 介 服 务 机 构, 是 房 地 产 开 发 价 值 链 中 不 可 或 缺
More informationC++ 程式設計
C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004
More informationMicrosoft Word - 第3章.doc
第 3 章流程控制和数组 3.1 实验目的 (1) 熟练掌握控制台应用程序的代码编写和调试, 以及运行方法 (2) 掌握选择结构的一般语法格式和应用 (3) 掌握 switch 语句的用法 (4) 掌握选择结构的嵌套的用法, 能灵活使用选择结构解决实际问题 (5) 掌握 while 循环语句的一般语法格式 (6) 掌握 for 循环语句的一般语法格式 (7) 掌握循环嵌套的语法格式 (8) 掌握一维数组的定义
More informationC/C++ 语言 - 循环
C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf
More informationMicrosoft PowerPoint - ds-1.ppt [兼容模式]
http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有
More information書本介紹
班 級 經 營 期 末 報 告 組 員 : 幼 三 甲 4A0I0030 蔡 依 璇 4A0I0048 蘇 家 儀 4A0I0096 張 容 嫣 4A0I0098 袁 少 潔 書 本 介 紹 閱 讀 對 象 : 小 學 低 年 級 的 老 師 新 生 家 長 有 意 從 事 小 學 者 及 關 心 教 育 品 質 的 社 會 人 士 內 容 : 1. 教 師 如 何 成 功 有 效 地 經 營 低
More informationC/C++语言 - 分支结构
C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days
More information软件工程文档编制
实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,
More information06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b
06 01 action JavaScript action jquery jquery AJAX 04 4-1 CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS background-color camel-cased DOM backgroundcolor.css()
More informationMicrosoft Word - PHP7Ch01.docx
PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:
More informationC/C++语言 - C/C++数据
C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;
More informationaf9c70ccea1f1950c6732b99b2e51134_ pdf
$450 ( $340 ( $900( $670 ( L $2,640 ( M $2,000 ( K E $3730 ( $2,850( $5,740 ( $4,350( X D $790 $590 ( $1,390( $1,040 ( $1,980( $1,480( L M K $4,050 ( $3,060 ( E $3730 ( $2,850( $5,740 ( $4,350( X D +$70
More informationuntitled
1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1
More information2007
2007 年 上 半 年 软 件 评 测 师 考 试 浅 析 作 者 : 陈 嘉 祥 方 耀 公 司 : 广 东 亿 迅 科 技 有 限 公 司 ( 质 量 管 理 部 ) 1 简 介 1.1 目 的 本 文 章 主 要 介 绍 软 件 评 测 师 考 试 的 范 围 内 容 以 及 其 重 要 性, 还 有 相 关 的 试 题 分 析 1.2 适 用 范 围 有 意 参 与 或 将 来 有 意 参
More information<4D6963726F736F667420576F7264202D203136BCADBBD8D2E4D3EBD1D0BEBF2E646F63>
一 九 八 八 年 创 刊 回 忆 与 研 究 第 十 六 辑 上 海 市 新 四 军 历 史 研 究 会 浙 东 浙 南 分 会 编 二 O 一 三 年 十 二 月 1 ( 封 面 折 页 字 ) 编 委 会 顾 问 丁 公 量 丁 柯 吴 文 达 汪 志 荣 戚 南 强 李 国 经 主 编 陈 晓 光 副 主 编 葛 奇 忠 方 思 朋 编 委 ( 按 姓 氏 笔 画 为 序 ) 方 思 朋 王
More information萧山中学课程建设方案.doc
- 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - 2 2 4 4 4 2 2 4 4 4 4 4 5 5 4 4 4 4 5 5 4 4 4 4 5 5 3 3 3 3 4(2) 4(2) 4(2) 4(2) 4 4 4 4 3 3 3 3 3 3 4 4 4 4 4(2) 4(2) 4(2) 4(2) 2 2 2 2 4 4 4 4 2 2 2 2 2
More information( ) 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 121.2 117.5 125.8 122.0 130.9 126.8 135.4 131.5 140.3 136.0 144.9 140.2 153.5 147.9 160.6 154.7 165.1 160.3 167.7 163.9 169.3 165.8 169.6 166.7 170.0 167.8
More informationMicrosoft Word - 9pinggb_A4.doc
九 评 共 产 党 大 纪 元 系 列 社 论 2004 年 11 月 http://dajiyuan.com http://epochtimes.com 目 录 公 告 大 纪 元 发 表 系 列 社 论 九 评 共 产 党... 3 九 评 之 一 评 共 产 党 是 什 么... 4 前 言... 5 一. 以 暴 力 恐 怖 夺 取 和 维 持 政 权... 5 二. 以 谎 言 为 暴 力
More informationMicrosoft Word - 9pinggb_A4-f4.doc
九 评 共 产 党 大 纪 元 系 列 社 论 2004 年 11 月 http://dajiyuan.com http://epochtimes.com 目 录 公 告 大 纪 元 发 表 系 列 社 论 九 评 共 产 党... 4 九 评 之 一 评 共 产 党 是 什 么... 4 前 言...5 一. 以 暴 力 恐 怖 夺 取 和 维 持 政 权... 5 二. 以 谎 言 为 暴 力
More information理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 余 路 [ 摘 要 ] 事 业 单 位 改 革 是 中 国 改 革 的 重 要 环 节, 其 影 响 力 和 难 度 不 亚 于 国 有 企 业 改 革 本 文 着 重 围 绕 推 进 事 业 单 位 改 革 应 考 虑 的 五 个 方 面
目 录 理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 1 信 息 交 流 省 编 办 刘 维 寅 副 主 任 到 我 市 对 市 县 政 府 机 构 改 革 工 作 进 行 实 地 评 估 11 我 市 部 分 部 门 试 点 实 行 部 门 内 部 行 政 审 批 制 度 改 革 工 作 13 我 市 三 项 措 施 确 保 机 构 编 制 监 督 活 动 常 态 化 14 基 层
More information日 本 位 于 亚 洲 东 部, 太 平 洋 西 北 角, 是 我 国 东 方 的 一 个 岛 国 在 洪 积 世 ( 注 1) 的 大 部 分 时 期 内, 日 本 与 大 陆 相 连 大 约 在 洪 积 世 晚 期 至 冲 积 世 ( 注 2) 初 期, 日 本 各 地 发 生 海 进, 出 现
前 言 日 本 是 我 们 的 邻 国 文 献 可 考 的 两 国 关 系, 至 少 已 有 21 个 世 纪 古 代 日 本 文 化 的 发 展 晚 于 中 国, 而 日 本 民 族 却 能 在 固 有 文 化 的 基 础 上 对 外 国 文 化 采 取 选 择 吸 收 和 创 新 的 态 度, 形 成 自 己 独 特 的 文 化 封 建 末 期, 中 国 和 日 本 同 受 西 方 列 强 的
More information2深化教育教学改革、创新人才培养模式
高 职 物 流 管 理 专 业 人 才 培 养 模 式 的 创 新 与 实 践 1 李 选 芒 2 赵 居 礼 摘 要 高 职 物 流 管 理 专 业 人 才 培 养 模 式 改 革 的 重 点 是 明 确 专 业 培 养 目 标, 构 建 适 应 培 养 目 标 的 课 程 体 系, 营 造 职 业 技 术 训 练 的 教 环 境, 建 设 双 师 结 构 的 师 资 队 伍 陕 西 工 业 职
More informationMicrosoft Word - 9pinggb_let.doc
九 评 共 产 党 大 纪 元 系 列 社 论 2004 年 11 月 http://dajiyuan.com http://epochtimes.com 目 录 公 告 大 纪 元 发 表 系 列 社 论 九 评 共 产 党... 4 九 评 之 一 评 共 产 党 是 什 么... 5 前 言... 5 一. 以 暴 力 恐 怖 夺 取 和 维 持 政 权... 5 二. 以 谎 言 为 暴 力
More information实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名 称 等 所 有 时 间 都 为 学 生 装 好 行 李 出 发 时 间, 请 提 前 0 分 钟 将 行 李 运 到
附 件 :.014 年 实 习 生 进 出 实 习 单 位 用 车 方 案 南 京 医 科 大 学 014 年 6 月 实 习 学 生 进 出 实 习 单 位 用 车 计 划 教 务 处 编 014 年 6 月 5 日 实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名
More information简报158期.doc
党 员 干 部 现 代 远 程 教 育 简 报 第 15 期 ( 总 第 158 期 ) 中 共 山 东 省 委 农 村 党 员 干 部 现 代 远 程 教 育 领 导 协 调 小 组 办 公 室 2012 年 10 月 31 日 喜 迎 十 八 大 威 海 市 组 织 开 展 系 列 主 题 宣 传 活 动 迎 接 党 的 十 八 大 一 是 发 挥 党 建 电 视 栏 目 作 用 强 化 宣 传
More informationMicrosoft Word - 9pingb5_let.doc
九 評 共 產 黨 大 紀 元 系 列 社 論 2004 年 11 月 http://dajiyuan.com http://epochtimes.com 目 錄 公 告 大 紀 元 發 表 系 列 社 論 九 評 共 產 黨... 3 九 評 之 一 評 共 產 黨 是 甚 麼... 4 前 言... 4 一. 以 暴 力 恐 怖 奪 取 和 維 持 政 權... 5 二. 以 謊 言 為 暴 力
More information103.06.23退休權益.ppt [相容模式]
臺 中 市 政 府 人 事 處 不 可 不 知 之 退 休 權 益 1 大 綱 一 退 休 撫 卹 理 論 二 現 行 退 休 制 度 (85 制 ) 三 再 任 停 止 領 受 月 退 休 金 及 優 惠 存 款 四 案 例 分 享 五 公 務 人 員 退 休 撫 卹 法 草 案 (90 制 ) 六 公 務 人 員 保 險 法 103 年 1 月 29 日 修 法 七 結 語 一 退 休 撫 卹
More informationMicrosoft Word - 1.《國文》試題評析.doc
許 清 龍 老 師 試 題 評 析 國 文 試 題 評 析 / 命 中 事 實 100 學 年 度 私 醫 聯 招 的 國 文 科 考 題, 有 上 課 的 同 學 應 該 發 出 會 心 一 笑, 甚 至 狂 笑, 因 為 老 師 的 命 中 率 實 在 太 高 了 除 了 基 本 的 字 音 字 形 字 義 成 語 的 題 型 外, 時 序 的 題 型 考 了 干 支 判 別 題 目 完 全 可
More information