文档库 最新最全的文档下载
当前位置:文档库 › 清华大学《水处理工程2》—第十讲010

清华大学《水处理工程2》—第十讲010

清华大学《水处理工程2》—第十讲010
清华大学《水处理工程2》—第十讲010

第三章厌氧生物处理

3.1基本概念

3.1.1厌氧生物处理的基本原理

一、厌氧生物处理的基本生物过程及其特征

——又称厌氧消化、厌氧发酵;

——实际上,是指在厌氧条件下由多种(厌氧或兼性)微生物的共同作用下,使有机物分解并产生CH4和CO2的过程。

1、厌氧生物处理工艺的发展简史:

①上述的厌氧过程广泛地存在于自然界中;

②人类第一次利用厌氧消化处理废弃物,是始于1881年——Louis Mouras的“自动净化器”;

③随后人类开始较大规模地应用厌氧消化过程来处理城市污水(如化粪池、双层沉淀池等)和剩余污泥(如各种厌氧

消化池等);

——长的HRT、低的处理效率、浓臭的气味等;

④50、60年代,特别是70年代中后期,随着能源危机的加剧,人们对利用厌氧消化过程处理有机废水的研究得以强

化,出现了一批被称为现代高速厌氧消化反应器的处理工艺,厌氧消化工艺开始大规模地应用于废水处理;

——HRT大大缩短,有机负荷大大提高,处理效率也大大提高;

——厌氧接触法、厌氧滤池(AF)、上流式厌氧污泥床(UASB)反应器、厌氧流化床(AFB)、AAFEB、厌氧生物转盘(ARBC)和挡板式厌氧反应器等;

——HRT与SRT分离,SRT相对很长,HRT则可以较短,反应器内生物量很高。

⑤最近(90年代以后),随着UASB反应器的广泛应用,在其基础上又发展起来了EGSB和IC反应器;

——EGSB反应器可以在较低温度下处理低浓度的有机废水;

——IC反应器则主要应用于处理高浓度有机废水,可以达到更高的有机负荷。

2、厌氧消化过程的基本生物过程

①两阶段理论:

——30~60年代,被普遍接受的是“两阶段理论”

●第一阶段:发酵阶段,又称产酸阶段或酸性发酵阶段;

——水解和酸化,产物主要是脂肪酸、醇类、CO2和H2等;

——主要参与微生物统称为发酵细菌或产酸细菌;

——其特点有:1)生长快,2)适应性(温度、pH等)强。

●第二阶段:产甲烷阶段,又称碱性发酵阶段;

——产甲烷菌利用前一阶段的产物,并将其转化为CH4和CO2;

——主要参与微生物统称为产甲烷菌;

——其特点有:1)生长慢;2)对环境条件(温度、pH、抑制物等)非常敏感。

②三阶段理论:

——深入研究后,发现上述过程不能真实反映厌氧反应过程的本质;

——微生物学的研究表明,产甲烷菌只能利用一些简单有机物如甲酸、乙酸、甲醇、甲基胺类以及H2/CO2等,而不能利用含两个碳以上的脂肪酸和甲醇以外的醇类;

——70年代,Bryant发现原来认为是一种被称为“奥氏产甲烷菌”的细菌,实际上是由两种细菌共同组成的,一种细菌首先把乙醇氧化为乙酸和H2,另一种细菌利用H2和CO2产生CH4;

——因而,提出了“三阶段理论”

水解、发酵阶段:

●产氢产乙酸阶段:产氢产乙酸菌,将丙酸、丁酸等脂肪酸和乙醇等转化为乙酸、H2/CO2;

●产甲烷阶段:产甲烷菌利用乙酸和H2、CO2产生CH4;

●一般认为,在厌氧生物处理过程中约有70%的CH4产自乙酸的分解,其余的则产自H2和CO2。

③四阶段理论(四菌群学说):

●同型产乙酸菌:将H2/CO2合成为乙酸。

但实际上这一部分乙酸的量较少,只占全部乙酸的5%。

——三阶段、四阶段理论是目前认为的对一样生物处理过程较全面和较准确的描述。

3、厌氧生物处理的主要特征

●能耗大大降低,而且还可以回收生物能(沼气);

●污泥产量很低;

——厌氧微生物的增殖速率比好氧微生物低得多,产酸菌的产率Y为0.15~0.34kgVSS/kgCOD,产甲烷菌的产率Y为

0.03kgVSS/kgCOD左右,而好氧微生物的产率约为0.25~0.6kgVSS/kgCOD。

●厌氧微生物有可能对好氧微生物不能降解的一些有机物进行降解或部分降解;

●反应过程较为复杂——厌氧消化是由多种不同性质、不同功能的微生物协同工作的一个连续的微生物过程;

●对温度、pH等环境因素较敏感;

●但一般来说,①处理出水水质较差,需进一步利用好氧法进行处理;②气味较大;③对氨氮的去除效果不好;等等

4、厌氧生物处理技术是我国水污染控制的重要手段

——我国高浓度有机工业废水排放量巨大,这些废水浓度高、多含有大量的碳水化合物、脂肪、蛋白质、纤维素等有机物;——我国当前的水体污染物还主要是有机污染物以及营养元素N、P的污染;

——目前的形势是:能源昂贵、土地价格剧增、剩余污泥的处理费用也越来越高;

——厌氧工艺的突出优点是:①能将有机污染物转变成沼气并加以利用;②运行能耗低;③有机负荷高,占地面积少;

④污泥产量少,剩余污泥处理费用低;等等

——厌氧工艺的综合效益表现在环境、能源、生态三个方面。

二、厌氧消化过程中的主要微生物

——发酵细菌(产酸细菌)、产氢产乙酸菌、产甲烷菌等。 1、发酵细菌(产酸细菌): ● 主要功能:水解——在胞外酶的作用下,将不溶性有机物水解成可溶性有机物; 酸化——将可溶性大分子有机物转化为脂肪酸、醇类等;

● 主要细菌:梭菌属、拟杆菌属、丁酸弧菌属、双岐杆菌属等;

● 水解过程较缓慢,并受多种因素影响(pH 、SRT 、有机物种类等),有时回成为厌氧反应的限速步骤; ● 产酸反应的速率较快;

● 大多数是厌氧菌,也有大量是兼性厌氧菌;

● 可以按功能来分:纤维素分解菌、半纤维素分解菌、淀粉分解菌、蛋白质分解菌、脂肪分解菌等。 2、产氢产乙酸菌

● 主要功能:将各种高级脂肪酸和醇类氧化分解为乙酸和H 2; ●

主要反应:乙醇: 232232H COOH

CH O H OH CH CH +→+

丙酸:22322332CO H COOH

CH O H COOH

CH CH ++→+

丁酸:232223222H COOH CH O H COOH CH CH CH +→+ 注意:上述反应只有在乙酸浓度很低,系统中氢分压很低时才能顺利进行。 ● 主要细菌:互营单胞菌属、互营杆菌属、梭菌属、暗杆菌属等; ●

多数是严格厌氧菌或兼性厌氧菌。

3、产甲烷菌

——60年代Hungate 开创了严格厌氧微生物培养技术; ● 主要功能:将产氢产乙酸菌的产物——乙酸和H 2/CO 2转化为CH 4和CO 2,使厌氧消化过程得以顺利进行; ● 一般可分为两大类:乙酸营养型和H 2营养型产甲烷菌;

● 一般来说,乙酸营养型产甲烷菌的种类较少,只有Methanosarcina 和Methanothrix ,但在厌氧反应器中,有70%左右的甲烷是来自乙酸的氧化分解; ●

典型的产甲烷反应:

① 24

3CO CH

COOH CH +→

② O H CH

CO H 24

2

224+→+

③ -

+

-

++→+3

2

4

224HC

CO

CH H HCOO

④ 2

4

2324CO

CH O H CO +→+ ⑤ O

H H H C O CH OH CH 234

334+++→+

-

⑥ ++

-++++→+-4

3

4

24

3343399)(4NH

H

HCO CH

O H NH

CH

⑦ S H H

H C O CH O H S CH 234

233233)(2+++→+-+

-

⑧ O

H CH H OH CH 24

234+→+

根据产甲烷菌的形态和生理生态特征,可将其分类如下:

——最新的分类(Bergy’s细菌手册第九版),共分为:三目、七科、十九属、65种;

●产甲烷菌有各种不同的形态,常见的有:

①产甲烷杆菌

②产甲烷球菌

③产甲烷八叠球菌

④产甲烷丝菌

●在生物分类学上,产甲烷菌(Methanogens)属于古细菌(Archaebacteria),大小、外观上与普通细菌(Eubacteria)相

似,但实际上,其细胞成分特殊,特别是细胞壁的结构较特殊。

●在自然界的分布,一般可以认为是栖息于一些极端环境中(如地热泉水、深海火山口、沉积物等),但实际上其分布极

为广泛,如污泥、瘤胃、昆虫肠道、湿树木、厌氧反应器等。

●产甲烷菌都是严格厌氧细菌,要求氧化还原电位在-150~-400mv,氧和氧化剂对其有很强的毒害作用;

●产甲烷菌的增殖速率很慢,繁殖世代时间长,可达4~6天,因此,一般情况下产甲烷反应是厌氧消化的限速步骤

三、厌氧生物处理的影响因素

——产甲烷反应是厌氧消化过程的控制阶段,因此,一般来说,在讨论厌氧生物处理的影响因素时主要讨论影响产甲烷菌的各项因素;

——主要因素有:温度、pH值、氧化还原电位、营养物质、F/M比、有毒物质等。

1、温度:

●温度对厌氧微生物的影响尤为显著:

●厌氧细菌可分为嗜热菌(或高温菌)、嗜温菌(中温菌);相应地,厌氧消化分为:高温消化(55?C左右)和中温消化

(35?C左右);

●高温消化的反应速率约为中温消化的1.5~1.9倍,产气率也较高,但气体中甲烷含量较低;

●当处理含有病原菌和寄生虫卵的废水或污泥时,高温消化可取得较好的卫生效果,消化后污泥的脱水性能也较好;

●随着新型厌氧反应器的开发研究和应用,温度对厌氧消化的影响不再非常重要(新型反应器内的生物量很大),因此可

以在常温条件下(20~25?C)进行,以节省能量和运行费用。

2、pH值和碱度:

●pH值是厌氧消化过程中的最重要的影响因素;

●重要原因:产甲烷菌对pH值的变化非常敏感,一般认为,其最适pH值范围为6.8~7.2,在<6.5或>8.2时,产甲烷菌

会受到严重抑制,而进一步导致整个厌氧消化过程的恶化;

●厌氧体系中的pH值受多种因素的影响:进水pH值、进水水质(有机物浓度、有机物种类等)、生化反应、酸碱平衡、

气固液相间的溶解平衡等;

● 厌氧体系是一个pH 值的缓冲体系,主要由碳酸盐体系所控制;

一般来说:系统中脂肪酸含量的增加(累积),将消耗-

3HCO ,使pH 下降; 但产甲烷菌的作用不但可以消耗脂肪酸,而且还会产生-

3

HCO ,使系统的pH 值回升。

● 碱度曾一度在厌氧消化中被认为是一个至关重要的影响因素,但实际上其作用主要是保证厌氧体系具有一定的缓冲能力,维持合适的pH 值;

● 厌氧体系一旦发生酸化,则需要很长的时间才能恢复。 3、氧化还原电位:

● 严格的厌氧环境是产甲烷菌进行正常生理活动的基本条件;

● 非产甲烷菌可以在氧化还原电位为+100~ -100mv 的环境正常生长和活动;

● 产甲烷菌的最适氧化还原电位为-150~ -400mv ,在培养产甲烷菌的初期,氧化还原电位不能高于-330mv ; 4、营养要求:

厌氧微生物对N 、P 等营养物质的要求略低于好氧微生物,其要求COD :N :P = 200:5:1;

多数厌氧菌不具有合成某些必要的维生素或氨基酸的功能,所以有时需要投加:①K 、Na 、Ca 等金属盐类;②微量元素Ni 、Co 、Mo 、Fe 等;③有机微量物质:酵母浸出膏、生物素、维生素等。

5、F/M 比: ●

厌氧生物处理的有机物负荷较好氧生物处理更高,一般可达5~10kgCOD/m 3.d ,甚至可达50~80 kgCOD/m 3.d ; ——无传氧的限制;

——可以积聚更高的生物量。 ● 产酸阶段的反应速率远高于产甲烷阶段,因此必须十分谨慎地选择有机负荷; ● 高的有机容积负荷的前提是高的生物量,而相应较低的污泥负荷; ●

高的有机容积负荷可以缩短HRT ,减少反应器容积。

6、有毒物质:

——常见的抑制性物质有:硫化物、氨氮、重金属、氰化物及某些有机物; ①硫化物和硫酸盐: ● 硫酸盐和其它硫的氧化物很容易在厌氧消化过程中被还原成硫化物;

● 可溶的硫化物达到一定浓度时,会对厌氧消化过程主要是产甲烷过程产生抑制作用; ● 投加某些金属如F e 可以去除S 2-,或从系统中吹脱H 2S 可以减轻硫化物的抑制作用。 ②氨氮:

● 氨氮是厌氧消化的缓冲剂;

● 但浓度过高,则会对厌氧消化过程产生毒害作用;

抑制浓度为50~200mg/l ,但驯化后,适应能力会得到加强。

③重金属:

——使厌氧细菌的酶系统受到破坏。 ④氰化物: ⑤有毒有机物:

四、厌氧消化过程中沼气产量的估算 ● 糖类、脂类和蛋白质等有机物经过厌氧消化能转化为甲烷和CO 2等气体,这样的混合气体统称为沼气(Biogas ); ●

产生沼气的数量和成分取决于被消化的有机物的化学组成,一般可以用下式进行估算:

42248

2

48

2

24

CH b a n CO b a n O H b a n O H C b

a n ??

? ??-++??

? ??+-→??

? ?

?--+ ● 理论上认为,1gCOD 在厌氧条件下完全降解可以生成0.25 gCH 4,相当于标准状态下的甲烷气体体积为0.35L ; ● 沼气中CO 2和CH 4的百分含量不仅与有机物的化学组成有关,还与其各自的溶解度有关;

● 由于一部分沼气(特别是其中的CO 2)会溶于出水中,同时,一部分有机物还会被用于微生物的合成,所以实际产气量要比理论产气量小。

3.2 厌氧生物处理工艺

3.2.1 早期的厌氧生物反应器

——厌氧消化应用于废水处理的初级阶段,是从1881年法国Mouras设计的自动净化器开始到本世纪的20年代;——1881年法国Mouras的自动净化器:

——1891年英国Moncriff的装有填料的升流式反应器:

——1895年,英国设计的化粪池(Septic Tank)

图3

——1905年,德国的Imhoff池(又称隐化池、双层沉淀池)

图4

其特点:

①处理废水的同时,也处理有废水沉淀下来的污泥;

②前几种构筑物由于废水和污泥不分隔而影响出水水质;

③双层沉淀池则有了很大改进,有上层沉淀池和下层消化池;

④停留时间很长,出水水质也较差;

⑤后两种反应器曾在英、美、德、法等国得到广泛推广,在我国目前仍有应用。

3.2.2厌氧消化池

——随着活性污泥法、生物滤池等好氧生物处理工艺的开发和推广应用,厌氧生物处理被认为是效率低、HRT长、受温度等环境条件的影响大,因此处于一种被遗弃的状态;

——但好氧生物处理工艺的广泛应用,产生的剩余污泥也越来越多,其稳定化处理的主要手段是厌氧消化,这是第二阶段的主要特征;

——1927年,首次在消化池中加上了加热装置,使产气速率显著提高;

——随后,又增加了机械搅拌器,反应速率进一步提高;

——50年代初又开发了利用沼气循环的搅拌装置;

——带加热和搅拌装置的消化池被称为高速消化池,至今仍是城市污水处理厂中污泥处理的主要技术。

一、消化池的类型与构造

——厌氧消化池主要应用于处理城市污水厂的污泥,也可应用于处理固体含量很高的有机废水;

——主要作用:①一部分有机物转变为沼气;

②一部分有机物形成稳定性良好的腐殖质;

③提高了污泥的脱水性能;

④污泥体积可减少1/2以上;

⑤致病微生物也得到了一定程度的灭活,有利于污泥的进一步处理和利用。

消化池的分类:

——按形状:圆柱形、椭圆形(卵形)和龟甲形;

——按池顶结构:固定盖式和浮动盖式;

——按运行方式:传统消化池和高速消化池。

A、传统消化池:

图5

——又称低速消化池,无加热和搅拌装置;

——有分层现象:只有部分容积有效;

——消化速率很低,HRT很长(30~90天)。

B、高速消化池

图6

——设有加热和搅拌装置;

——缩短了有机物稳定所需的时间,也提高了沼气产量,在中温(30~35 C)条件下,一般消化时间为15天左右,运行稳定;

——但搅拌使高速消化池内的污泥得不到浓缩,上清液不能分离。

C、两级消化池

——两级串联,第一极是高速消化池,第二级则不设搅拌和加热,主要起沉淀浓缩和贮存的作用,并能分离上清液;——二者的HRT的比值可采用1:1~4:1,一般为1:2。

图7

2、消化池的构造

——由池顶、池底和池体三部分组成;

——池顶:固定盖和浮动盖,集气罩;

——池底:倒圆锥形,有利于排泥。

搅拌:机械搅拌和沼气搅拌

机械搅拌

①泵搅拌:从池底抽出消化污泥,用泵加压后送至浮渣层表面或其它部位,进行循环搅拌,一般与进料和池外加热合并一起进行; ②螺旋浆搅拌:在一个竖向导流管中安装螺旋桨;‘ ③水射器搅拌: ● 沼气搅拌

①气提式搅拌: ②竖管式搅拌: ③气体扩散式搅拌:

加热

①池内蒸汽直接加热:设备简单,局部污泥易过热,会影响厌氧微生物的正常活动,并会增加污泥含水率;

②池外加热:把污泥预热后投配到消化池中,所需预热的污泥量较少,易于控制;预热温度较高,有利于杀灭虫卵;不会对厌氧微生物不利;但设备较复杂。 二、

消化池的设计:

——主要内容:①消化池池体设计; ②搅拌设备设计; ③加热保温系统设计。 ——消化池的池体设计: ●

目前国内一般按污泥投配率确定消化池容积,

p

V V '=

式中:V ——消化池的有效容积,m 3;

V ’——每天需要处理的新鲜污泥的统计,m 3/d ;

p ——污泥投配率,如高速消化池处理生活污水的污泥,在消化温度为30~35?C 时,p 可取6~18%; 一般要求消化池的个数不少于2。 ●

国外则多按固体负荷率来计算消化池的有效容积:

v

s L G V =

式中:G s ——每日需要处理的污泥干固体量,kgVSS/d ; L v ——单位容积消化池固体负荷率,kgVSS/m 3.d 。 ——L v 值与污泥的含固率、温度有关,如下表:

●确定消化池有效容积后,既可计算消化池的构造尺寸,其一般要求:

①圆柱形池体的直径一般为6~35m;

②柱体高径之比为1:2;

③池总高与直径之比为0.8~1.0;

④池底坡度一般为0.08;

⑤池顶部的集气罩,高度和直径相同,一般为2.0m;

⑥池顶至少设两个直径为0.7m的人孔。

●消化池的工艺管道:

污泥管:进泥管、出泥管、循环搅拌管;

上清液排放管;

溢流管;

沼气管;

取样管

三、沼气的收集与利用

——污泥和高浓度有机废水进行厌氧消化时均会产生大量沼气;

——沼气的热值很高(一般为21000~25000 kJ/m3,即5000~6000 kCal/m3),是一种可利用的生物能源。

1、污泥消化过程中沼气产量的估算:

●沼气成分:一般认为CH450~70%,CO220~30%,H22~5%,N2~10%,微量H2S等;

●沼气产率是指每处理单位体积的生污泥所产生的沼气量,即m3沼气/m3生污泥;

●产气率与污泥的性质、污泥投配率、污泥含水率、发酵温度等有关;

●当污泥来自城市污水处理厂,生污泥含水率为96%时:

中温消化,投配率为6~8%,产气率可达10~12 m3沼气/m3生污泥;

高温消化,投配率为6~8%,产气率可达22~26 m3沼气/m3生污泥

投配率为13~15%,产气率可达13~15 m3沼气/m3生污泥

1、沼气的收集:

设置凝结水罐;注意安全;阻火器;沼气管可加保温;

2、沼气的贮存:

调节产气量与用气量之间的平衡;

调节容积一般为日平均产气量的25~40%,即6~10h的产气量;

注意防腐、防火。

编译原理实验指导

编译原理实验指导 实验安排: 上机实践按小组完成实验任务。每小组三人,分别完成TEST语言的词法分析、语法分析、语义分析和中间代码生成三个题目,语法分析部分可任意选择一种语法分析方法。先各自调试运行,然后每小组将程序连接在一起调试,构成一个相对完整的编译器。 实验报告: 上机结束后提交实验报告,报告内容: 1.小组成员; 2.个人完成的任务; 3.分析及设计的过程; 4.程序的连接; 5.设计中遇到的问题及解决方案; 6.总结。

实验一词法分析 一、实验目的 通过设计编制调试TEST语言的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。 二、实验预习提示 1.词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示 成以下的二元式(单词种别码,单词符号的属性值)。 2.TEST语言的词法规则 |ID|ID |NUM →a|b|…|z|A|B|…|Z →1|2|…|9|0 →+|-|*|/|=|(|)|{|}|:|,|;|<|>|! →>=|<=|!=|== →/* →*/ 三、实验过程和指导 1.阅读课本有关章节,明确语言的语法,画出状态图和词法分析算法流程图。 2.编制好程序。 3.准备好多组测试数据。 4.程序要求 程序输入/输出示例:

天津理工大学编译原理期末考试试卷

天津理工大学考试试卷 ~2010学年度第二学期 《编译原理》期末考试试卷 课程代码: 0660116 试卷编号: 1-A 命题日期: 2010 年 6 月 15 日 答题时限: 120 分钟考试形式:闭卷笔试 大题号 一二三四 总分 一、单项选择题(请从4个备选答案中选择最适合的一项,每小题2分, 得 分 1 2 3 4 5 6 7 8 9 10 D C B D D B C B D C 1. 编译程序是对() A. 汇编程序的翻译 B. 高级语言程序的解释执行 C. 机器语言的执行 D. 高级语言的翻译 2. 词法分析器的输出结果是() A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 3. 在规范规约中,用()来刻画可规约串。 A.直接短语 B.句柄 C.最左素短语 D.素短语 4. 与正规式(a* | b) * (c | d)等价的正规式是() A.a* (c | d) | b(c | d) B.a* (c | d) * | b(c | d) * C.a* (c | d)| b* (c | d) D.(a | b) * c| (a | b) * d 含有Aα·,则在状态K时,仅当面临输入符号a∈FOLLOW(A)时,才采 5. 若项目集I K 取Aα·动作的一定是() A.LALR文法 B.LR(0) 文法C.LR(1)文法 D.SLR(1)文法 6. 四元式之间的联系是通过()实现的。

A. 指示器 B. 临时变量 C. 符号表 D. 程序变量 7.文法G :S x Sx | y 所识别的语言是( ) A .xyx B .(xyx) * C .x n yx n (n ≥0) D .x * yx * 8. 有一语法制导翻译如下所示: S b Ab {print “1”} A (B {print “2”} A a {print “3”} B Aa) {print “4”} 若输入序列为b(((aa)a)a)b ,且采用自下而上的分析方法,则输出序列为( ) A .32224441 B. 34242421 C .12424243 D. 34442212 9.关于必经结点的二元关系,下列叙述不正确的是( ) A .满足自反性 B .满足传递性 C .满足反对称型 D .满足对称性 10.错误的局部化是指( )。 A .把错误理解成局部的错误 B .对错误在局部范围内进行纠正 C .当发现错误时,跳过错误所在的语法单位继续分析下去 D .当发现错误时立即停止编译,待用户改正错误后再继续编译 二、判断题(每小题1分,共5分) 得 分 1. 文法G 的一个句子对应于多个推导,则G 是二义性的。(× ) 2. 动态的存储分配是指在运行阶段为源程序中的数据对象分配存储单元。(√ ) 3. 算符优先文法采用“移进-规约”技术,其规约过程是规范的。( × ) 4. 删除归纳变量是在强度削弱以后进行。( √ ) 5. 在目标代码生成阶段,符号表用于目标代码生成。( × ) 5分,共15分) 得 分 1. 构造正规式(0∣1)* 00相应的正规式并化简。(共5分) (1)根据正规式,画出相应的NFA M (2分) I I 0 I 1 {x,1,2} {1,2,3} {1,2} {1,2,3} {1,2,3,4} {1,2} {1,2} {1,2,3} {1,2 } {1,2,3, {1,2,3,4} {1,2 } X 12 3 4 01

编译原理实验报告实验一编写词法分析程序

编译原理实验报告实验名称:实验一编写词法分析程序 实验类型:验证型实验 指导教师:何中胜 专业班级:13软件四 姓名:丁越 学号: 电子邮箱: 实验地点:秋白楼B720 实验成绩: 日期:2016年3 月18 日

一、实验目的 通过设计、调试词法分析程序,实现从源程序中分出各种单词的方法;熟悉词法分析 程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷自动机实现的方法。确定词法分析器的输出形式及标识符与关键字的区分方法。加深对课堂教学的理解;提高词法分析方法的实践能力。通过本实验,应达到以下目标: 1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2、掌握词法分析的实现方法。 3、上机调试编出的词法分析程序。 二、实验过程 以编写PASCAL子集的词法分析程序为例 1.理论部分 (1)主程序设计考虑 主程序的说明部分为各种表格和变量安排空间。 数组 k为关键字表,每个数组元素存放一个关键字。采用定长的方式,较短的关键字 后面补空格。 P数组存放分界符。为了简单起见,分界符、算术运算符和关系运算符都放在 p表中 (编程时,还应建立算术运算符表和关系运算符表,并且各有类号),合并成一类。 id和ci数组分别存放标识符和常数。 instring数组为输入源程序的单词缓存。 outtoken记录为输出内部表示缓存。 还有一些为造表填表设置的变量。 主程序开始后,先以人工方式输入关键字,造 k表;再输入分界符等造p表。 主程序的工作部分设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上 送来的一个单词;调用词法分析过程;输出每个单词的内部码。 ⑵词法分析过程考虑 将词法分析程序设计成独立一遍扫描源程序的结构。其流程图见图1-1。 图1-1 该过程取名为 lexical,它根据输入单词的第一个字符(有时还需读第二个字符),判断单词类,产生类号:以字符 k表示关键字;i表示标识符;c表示常数;p表示分界符;s表示运算符(编程时类号分别为 1,2,3,4,5)。 对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有 该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组id中,将常数 变为二进制形式存入数组中 ci中,并记录其在表中的位置。 lexical过程中嵌有两个小过程:一个名为getchar,其功能为从instring中按顺序取出一个字符,并将其指针pint加1;另一个名为error,当出现错误时,调用这个过程, 输出错误编号。 2.实践部分

四川大学编译原理期末复习总结

一、简答题 1.什么是编译程序 答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。 将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。 2.请写出文法的形式定义 答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S) –其中Vn表示非终结符号 –Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ –S是开始符号, –P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*) 3.语法分析阶段的功能是什么 答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。确定整个输入串是否构成语法上正确的程序。 4.局部优化有哪些常用的技术 答:优化技术1—删除公共子表达式 优化技术2—复写传播 优化技术3—删除无用代码 优化技术4—对程序进行代数恒等变换(降低运算强度) 优化技术5—代码外提 优化技术6—强度削弱 优化技术7—删除归纳变量 优化技术简介——对程序进行代数恒等变换(代数简化) 优化技术简介——对程序进行代数恒等变换(合并已知量) 5.编译过程分哪几个阶段 答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。每个阶段把源程序从一种表示变换成另一种表示。 6. 什么是文法 答:文法是描述语言的语法结构的形式规则。是一种工具,它可用于严格定义句子的结构; 用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。 7. 语义分析阶段的功能是什么 答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码); 并对静态语义进行审查。 8.代码优化须遵循哪些原则 答:等价原则:不改变运行结果 有效原则:优化后时间更短,占用空间更少 合算原则:应用较低的代价取得较好的优化效果 9.词法分析阶段的功能是什么 答:

河南科技大学期末考试编译原理试卷及答案

河南科技大学电信科卷A 一. 填空题(每空2分,共20分) 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。 3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。 6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。 7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分) 1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组 ( )。 A . 字符串 B . 产生式 C . 开始符号 D . 文法 2.程序的基本块是指( )。 A . 一个子程序 B . 一个仅有一个入口和一个出口的语句 C . 一个没有嵌套的程序段 D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。 A . 四元式序列 B . 间接三元式序列 C . 二元式序列 D . 机器语言程序或汇编语言程序 6. 一个文法所描述的语言是( );描述一个语言的文法是( )。

2015编译原理试卷A

………密………封………线………以………内………答………题………无………效…… 电子科技大学2014 -2015学年第2学期期末考试 A 卷 课程名称:编译原理考试形式:闭卷考试日期:2015 年月日考试时长:120分钟 课程成绩构成:大班平时10 %,期中10 %,实验10 %,期末70 % 本试卷试题由___七_ _部分构成,共__8___页。 题号一二三四五六七合计 得分 得分 一、选择题(共20分,共10题,每题2分) 1.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括() A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器 2.如果在推导过程中的任何一步α?β,都是对α中的最右非终结符进行替换,则称这种推导为() A.直接推导 B.广义推导 C.最左推导 D.规范推导 3.设有文法G[S]=({S,B},{b},{S→bB | b,B→bS},S),该文法所描述的语言是() A.L(G[S])={b n| n ≥0} B. L(G[S])={b2n| n ≥ 0} C. L(G[S])={b2n+1 | n ≥ 0} D. L(G[S])={b2n+1|n ≥ 1} 4.项目A α·称为(),其中A∈V N,A不是开始符。 A.移进项目 B.归约项目 C.待约项目 D.接受项目 5.编译程序生成的目标程序()是机器语言的程序。 A.一定B.不一定C.某种情况下一定D.某种情况下不一定 6.高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。 A.自左至右B.自顶向下C.自底向上D.自右向左 7.运行阶段的存储组织和管理的目的是() (1)提高编译程序的运行速度 (2)提高目标程序的运行速度 (3)为运行阶段的存储分配做准备 A.(1)(2) B.(1)(3) C.(2) D.(1)(2)(3) 8.如果文法G 是无二义的,则它的任何句子α() A.最左推导和最右推导对应的语法树必定相同 B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同

《编译原理》实验指导书

《编译原理》实验指导书 实验目的和内容 编译原理实验的目的是使学生将编译理论运用到实际当中,实现一个简单语言集的词法、语法和语义分析程序,验证实际编译系统的实现方法,并加深对编译技术的认识。 实验内容共需实现编译器的词法、语法和语义分析程序三个组成部分。要求学生必须完成每个实验的基本题目要求,有余力的同学可尝试实验的扩展要求部分。 实验报告 要求每人针对所完成的实验内容上交一份实验报告,其中主要包括三方面内容:1、实验设计:实验采用的实现方法和依据(如描述语言的文法及其机内表示,词分析 的单词分类码表、状态转换图或状态矩阵等,语法分析中用到的分析表或优先矩阵等,语法制导翻译中文法的拆分和语义动作的设计编写等);具体的设计结果(应包括整体设计思想和实现算法,程序结构的描述,各部分主要功能的说明,法以及所用数据结构的介绍等)。 2、程序代码:实验实现的源程序清单,要求符合一般的程序书写风格,有详细的注释。 3、实验结果分析:自行编写若干源程序作为测试用例,对所生成的编译程序进行测试 (编译程序的输入与输出以文件的形式给出);运行结果分析(至少包括一个正确和一个错误单词或语句的运行结果);以及改进设想等。 注意事项 1、电子版实验报告和源程序在最后一次机时后的一周内上交。(每个同学上交一个压 缩文件,其命名格式为“学号_姓名.rar”,内含实验报告和一个命名为“源程序” 的文件夹。注意提交的源程序应是经过调试、测试成功的较为通用的程序,并应有相应的注释、运行环境和使用方法简介。) 2、不接受不完整的实验报告和没有说明注释的源程序,或者说明与程序、运行结果不 符合的作业。 特别鼓励:扩展题目 1、为亲身经历一个小型编译器的开发全过程,触摸一下与实际编译器开发相关的工作, 大家可以自由组成3人左右的小组,推举组长,模拟一个团队分工协作开发大型软件的实战环境,融入软件工程的思想规范和一般理论方法,初步体验从系统分析设计、编码测试到交付维护的一个完整编译器软件的开发过程。要求组长为每个小组成员分配主要负责的任务,完成相应的分析设计员、程序员和测试员等角色的工作,并以小组为单位提交一份实验报告和源程序,在报告封面上写明每个同学主要完成和负责的部分。 2、以组为单位完成的实验内容至少必须整合词法、语法和语义三个部分的实验,对于 选定的适当规模的文法(如C语言的一个大小适宜的子集),进行系统的总体设计、功能分析、编码测试等工作。完成一个从对源程序的词法分析开始,到中间代码生成的完整的编译器前端的开发,使所涉及到的编译系统的各个组成模块有机地衔接在一起,提交一份完整的实验报告和源程序,并将以下几个方面描述清楚:

大学编译原理课程复习试题及答案

编译原理复习材料 选择题 1. 文法S→0S | S1 | 0的语言是( )。 A. { 0 m1m| m >=0 } B. { 0 m1m| m >=1 } C. { 0 m1n | m>=1,n>=0 } D. { 0 m1n | m>=0,n>=1 } 2. 描述程序语言所采用的Ⅲ型文法是( )。 A. 短语文法 B.正规文法 C.上下文无关文法 D.上下文有关文法 3. 状态转换图实现的简单方法是使每个状态结对应( )。 A.一个终结符 B.一个非终结符 C.一段小程序 D.一个函数 4. 规范归约的关键问题是寻找( )。 A. 最左素短语 B.句柄 C.直接短语 D.短语 5. 一个算符文法的任何产生式的右部都不含有两个相继的( )。 A.终结符 B.非终结符 C.终结符和非终结符 D.空字 6. 算符优先分析法的关键在于规定( )。 A.算符优先顺序和结合性质 B.算符优先顺序 C.结合性质 D.终结符和非终结符之间关系 7. 优先函数的优点是( )。 A.形象直观 B.便于进行比较运算 C.语法分析速度快 D.语法分析方法简单 8. 文法符号的属性通常分为( )两类。 A. 共用属性和私有属性 B.固有属性和可变属性 C.语法属性和语义属性 D.综合属性和继承属性 9. 在程序流图中,组成循环的结点序列应满足( ) A. 它们是强连通的 B.它们中间有唯一的入口结点 C.它们中间有一条回边 D.它们是强连通的且有唯一的入 口结点 10. 在利用寄存器R生成T1:=C/B的目标代码同时,还应记录信息( )。 A. C/B在T1中 B. T1在C/B中 C. R含有T1, T1在R中 D. R含有C/B, C/B在R中 1.D 2.B 3.C 4.B 5.B 6.A 7.B 8.D 9.D 10.C

编译原理实验指导书2010

《编译原理》课程实验指导书 课程编号: 课程名称:编译原理/Compiler Principles 实验总学时数: 8 适用专业:计算机科学与技术、软件工程 承担实验室:计算机学院计算机科学系中心实验室、计算机技术系中心实验室 一、实验教学的目的与要求 上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实习题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的2次上机实验都属于一种设计类型的实验,每个实验的训练重点在于基本的编译技术和方法,而不强调面面俱到;实验的目的是旨在使学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容;培养学生编制算法的能力和编程解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法设计和程序代码的编写;上机时应随带有关的编译原理教材或参考书;要学会程序调试与纠错。 每次实验后要交实验报告,实验报告的内容应包括: (1)实验题目、班级、学号、姓名、完成日期; (2)简要的需求分析与概要设计; (3)详细的算法描述; (4)源程序清单; (5)给出软件的测试方法和测试结果; (6)实验的评价、收获与体会。 开发工具: (1)DOS环境下使用Turbo C; (2)Windows环境下使用Visual C++ 。 考核: 实验成绩占编译原理课程结业成绩的10%。 三、单项实验的内容和要求: 要求每个实验保证每个学生一台微机。 实验一(4学时):单词的词法分析程序设计。 (一)目的与要求 1.目的 通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

编译原理实验-词法分析器的设计说明

集美大学计算机工程学院实验报告 课程名称:编译原理班级: 指导教师:: 实验项目编号:实验一学号: 实验项目名称:词法分析器的设计实验成绩: 一、实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 二、实验容 编写一个词法分析器,从输入的源程序(编写的语言为C语言的一个子集)中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 三、实验要求 1、词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符 2 别单词的类型,将标识符和常量分别插入到相应的符号表中,增加错误处理等。 3、编程语言不限。

四、实验设计方案 1、数据字典 本实验用到的数据字典如下表所示:

3、实验程序 #include #include #include #include //判断读入的字符是否为字母 bool isLetter(char c){ if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){ return true; } else return false; } //判断读入的字符是否为数字 bool isDigit(char c){ if(c >='0' && c <= '9'){ return true; } else return false; } //判断是否为关键字 bool isKey(char *string) { if(!strcmp(string,"void") || !strcmp(string,"if")|| !strcmp(string,"for")|| !strcmp(string,"wh ile") || !strcmp(string,"do")|| !strcmp(string,"return")|| !strcmp(stri ng,"break") || !strcmp(string,"main")|| !strcmp(string,"int")|| !strcmp(strin g,"float")|| !strcmp(string,"char") || !strcmp(string,"double")|| !strcmp(string,"String"))

编译原理试题B及答案

编译原理试题B 得分一、单项选择题(每题1分,共20分) 1、对编译系统有关概念描述正确的是( B) A.目标程序只能是机器语言 B. 编译程序处理的对象是源语言 C.解释程序属于编译程序 D. 词法分析无法自动进行 2. 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是什么 (B) A.词法分析 B. 语法分析 C.语义分析 D. 代码生成 3. 下面不能用于对文法进行描述的是(A ) A.源语言 B. EBNF C.BNF D. 语法图 4. 设有文法G[S]: S→0S|1A|0,A→1|1S|0B,B→1A|0B,下列符号串中是该文法的句子的是 ()? A.1010001001101 B.0101001110010010 C.1101010011110111 D.1010011101101010 (可画出DFA验证) 5. 文法G[S]: S→aA|bC|a A→aS|bB B→aC|bA|b C→aB|bS ,则不是L(G)句子的是( B )100501001000500aba B. a.a babbA5006021004010aa aaba D. aabC.abb (画出DFA) 6. 哪个不是DFA的构成成分(B) A.有穷字母表 B. 初始状态集合 C.终止状态集合 D. 有限状态集合 7.词法分析器的输入是( B ) A.单词符号串 B.源程序 C.语法单位 D.目标程序 8.在词法分析阶段不能识别的是(C ) A.标识符 B. 运算符 C.四元式 D. 常数

9.设有一段C语言程序while(i&&++j)

{ c=2.19; j+=k; i++;经过词法分析后可以识别的单词个数是(B )} ,.19 B.20 C.21 D.23A ( B )10.自上而下语法分析的主要动作是 C.规约 D. 匹配A.移进 B. 推导 ( D )分析器的自称部分是11.下面不属于LL(1) 总控程序 B. LL(1)分析表A.LL(1).分析栈 D.源程序串C 设有文法G[S]为12.→aS|c,C→AD|b,DBS→AB|bC, A→ε|b,→ε|aD A )则FOLLOW(A)为(.{a,#} D.{#}A.{a,c,#} B.{c,#} C G[S]: 13.设有文法)FIRST(Ap)为( C Ap|Bq→,A→a|cA,B→b|dB ,则S 其他.{p,q} B. {b,d} C.{a,c} D. A )自下而上语法分析的主要分析动作是(D 14. D. 移进-规约A.推导 B. 规约 C.匹配 ( C ) 15.算法优先分析中,可规约串是 .最左素短语 D.素短语A.句柄 B.活前缀 C )( B →SaS|ε},S}16. 设有文法,该文法是.二义性文法 B 文法A.LL(1)C.SLR(1)文法 D.算法优先文法 17、中间代码生成时所以据的是(C ) A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 18、给定文法G: E→E+T|T,T→T*F|F,F→i|(E) 则L(G)中的一个句子i+i+(i*i)*i的逆波兰表示为( C ) A.iii*i++ B.ii+iii**+ C.ii+ii*i*+ D.其他 19.在编译程序中与生成中间代码的目的无关的是(B ) A.便于目标代码优化 B.便于存储空间的组织 C.便于目标代码的移植 D.便于编译程序的移植 20.中间代码是介于源语言程序和什么之间的一种代码( D) A.源代码 B. 机器语言 C. 汇编语言 D. 目标代码 得分二.简答(每题3分,共12分) 1. 什么是解释程序? 解释程序也是一种翻译程序,它将源程序作为输入并执行之,即边解释边执行。 2. 词法分析器的主要任务是什么? 词法分析器的主要任务是逐步扫描和分解构成源程序的字符串,识别出一个一个的单词符号。 3.文法有哪几部分组成?

编译原理实验指导书(图)

编译原理 实 验 指 导 书

前言 编译原理是计算机科学与技术、软件工程等专业的主干课和必修课,由于这门课程相对抽象且内容较复杂,一直是比较难学的一门课程。在编译原理的学习过程中,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。 本书实验环境主要为C环境及一个词法分析器自动生成工具FLEX和一个语法分析器自动生成工具BISON。书中给出的参考源程序也是C源程序,但由于实验者熟悉精通的语言工具不尽相同,因而强求采用统一的编程语言编程是不现实的。实验者在掌握了编译程序各个阶段的功能和原理之后,不难借助使用其他自己熟悉的语言实现相关功能。 实验者在实验过程中应该侧重写出自己在算法分析、设计思路、实现功能或程序代码等方面的特色,写出设计和实现过程中遭遇到的难点和解决办法,可以不拘泥于实验指导给出的参考性设计思路,尽可能在深度和广度上加以拓展。只有这种各具特色的实验报告,才将更有利于体现实验者在创新思维和动手能力上的差异。 通过这些实验,能使学生对这些部份的工作机理有一个详细的了解,达到“知其然,且知其所以然”的目的。并可在C环境下对自动生成工具生成的词法、语法分析器进行编译调试。 由于手工生成词法和语法分析器的工作量太大,在实际中常用自动生成工具来完成之。这些工具中最著名的当属贝尔实验室的词法分析器生成工具LEX和语法分析器生成工具YACC。它们现已成为UNIX的标准应用程序同UNIX一起发行。与此同时GNU推出与LEX完全兼容的FLEX,与YACC完全兼容的BISON。这两个程序都在Internet上以源代码的形式免费发行,所以很容易在其它操作系统下重新编译安装。我们实验采用的就是for dos的FLEX和BISON。本书有关的编译工具及其源程序例子,可到BISON的网站上下载。关于FLEX和BISON的用法简介,参见附录,如需更详细的介绍,请参阅编译工具中帮助文件。

北方工业大学16编译原理期末复习题(答案)资料

北方工业大学 《编译原理》课程期末复习题(答案) A 卷 2016年春季学期 开课学院 考试方式:闭卷 考试时间:120 分钟 班级 姓名 学号 一判断题(每个小题1分,共10分) 1. 程序语言主要由语法和语义两方面定义。 ( ) 2. 自上而下分析方法会遇到的主要问题有左递归和回溯。 ( ) 3. 已知文法G :E →i | EAE ,A →+|* ,其中的终结符号集包括{i ,+}。( ) 4. 编译程序是将高级语言程序翻译成机器语言程序。 ( ) 5. 只含有综合属性的属性文法称为S-属性文法。 ( ) 6. LL(1)文法中第一个L 的含义是从左到右扫描输入串。 ( ) 7. 在编译中进行语法检查的目的是为了发现程序中所有错误。 ( ) 8. 一个语义子程序描述了一个文法所对应的翻译工作。 ( ) 9. 一个句型的直接短语是唯一的。 ( ) 10. 确定的自动机以及不确定的自动机都能正确地识别正规集。 ( ) 解:1.√ 2.√ 3.× 4.× 5.√ 6.√ 7.× 8.× 9.× 10.√ 二、选择题(每个小题1分,共20分) 1. 文法分为四种类型,即0型、1型、2型、3型。其中3型文法是____。 A. 短语文法 B. 正规文法 C. 上下文有关文法 D. 上下文无关文法 2. 不可能是目标代码。 A. 汇编指令代码 B. 可重定位指令代码 C. 绝对指令代码 D. 中间代码 3. 将编译程序分成若干个“遍”是为了 。 A. 提高程序的执行效率 B. 利用有限的机器内存并提高机器的执行效率 C. 使程序的结构更加清晰 D. 利用有限机器内存但降低了机器的执行效率 4. 后缀式ab+cd+/可用表达式 来表示。 订 线 装

四川大学编译原理期末试卷4套+复习资料

(2012-2013学年第2学期) 一.简答题 1.符号表的作用是什么?为了达到对其插入删除等操作的复杂度为O(1),需将其组织成什么数据结构。 2.分析树和语法书的区别。 3.什么是正规集。 4.什么叫句子,什么叫句型。 5.二义文法一定不是LL(1) 二.给定文法 S→A A→A+A|B++ B→y 1.画出句子y+++y++的分析树 2.给出句子y+++y++的最右推导 三.给定正则表达式(a|b)*abb 1.使用thompson构造法构造等价的NFA。 2.用子集法对(1)得到的NFA进行确定化和最小化,得到等价的最小DFA。 3.使用双层多分支语句实现(2)得到的DFA。写出伪代码。 四.给定文法 statement→if-stmt|other|e if-stmt→if(exp)statement else-part else-part→else statement|e exp→0|1 写出递归下降子程序的伪代码。 五.给定文法 S→[SX]|a X→e|+SY|Yb Y→e|-SXc 1.对文法中的每一个非终结符构造First集和Follow集。 2.构造LL(1)分析表 3.基于分析表,使用LL(1)对句子[a+a-ac]进行自顶向下的语法分析,给出每一步的动作及分析栈和输入串的变化情况。 六.给定文法 E→E+T|T T→T*F|F F→(E)|id 1.构造LR(0)项目的DFA: 2.构造SLR(1)的分析表 3.利用2得到的分析表对id+id*id进行自顶向下的语法分析。 七. 1.给出构造Follow集合的算法描述 2.给出SLR(1)算法的描述

编译原理实验指导书

编译原理实验指导 书

《编译原理》实验指导书 太原科技大学计算机学院 -3-1

序 《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。该课程系统地向学生介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计和算法,因此,一直是一门比较难学的课程。为了使学生更好地理解和掌握编译原理和技术的基本概念、基本原理和实现方法,实践环节非常重要,只有经过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。 为了配合《编译原理》课程的教学,考虑到本课程的内容和特点,本指导书设置了七个综合性实验,分别侧重于词法分析、NFA的确定化、非递归预测分析、算符优先分析器的构造、LR分析、语义分析和中间代码的生成、基于DAG的基本块优化,以支持编译程序的各个阶段,基本涵盖了《编译原理》课程的主要内容。 本指导书可作为《编译原理》课程的实验或课程设计内容,在课程教学的同时,安排学生进行相关的实验。实验平台可选择在MS-DOS或Windows操作系统环境,使用C/C++的任何版本作为开发工具。学生在做完试验后,应认真撰写实验报告,内容应

包括实验名称、实验目的、实验要求、实验内容、测试或运行结果等。

目录 实验一词法分析 ........................................................... 错误!未定义书签。实验二 NFA的确定化.................................................... 错误!未定义书签。实验三非递归预测分析 ............................................... 错误!未定义书签。实验四算符优先分析器的构造................................... 错误!未定义书签。实验五 LR分析 .............................................................. 错误!未定义书签。实验六语义分析和中间代码生成................................ 错误!未定义书签。实验七基于DAG的基本块优化................................... 错误!未定义书签。

郑州大学《编译原理》期末试题样卷

词法分析: 1、根据正规式(a|b)*(aa|bb) (a|b)*构造NFA, 然后确定化成DFA 2、设计一个最小化的DFA,其输入字母表是{0,1},接受从0开始以1结尾的所有序列 正规式为:0(0|1)*1 语法分析: 1、已知文法G[E]: E E+T|E-T|T,T T*F|T/F|F,F(E)|i 证明(F+i)-T*(E-T)是文法的句型,并给出该句型的短语、直接短语和句柄 3、文法:S Aa A BB B sb|c 消除左递归 4、文法:S Qd Q Rb|Se R Sa|Qf|a 消除左递归 5、判断文法S cA|BA A CB|ε B dB C a|bd 是否是LL(1)文法,说明理由。是的话构造预测分析表 6、已知文法G[A]: A(A)|a,构造该文法的LR(0)分析表 7、判断文法S Sab|bR R S|a 是不是SLR文法,若是,构造分析表,不是的话说明理由。 语法制导翻译和中间代码生成: 1、分别给出表达式-(a*(b-c))+d 的逆波兰式、四元式和三元式 逆波兰式:@(a*(b-c))+d到@(a*(bc-))+d到@(abc-*)+d到(abc-*@)+d到abc-*@d+ 注意:@为求负的运算符- 四元式: (-,b,c,T1) (*,a,T1,T2) (@,T2,-,T3) (+,T3,d,T4) 2、写出a*-(b+c)树形表示法 3、对布尔式X+Y>Z∨A∧(┐B∨C)进行翻译 4、把语句if A∨B

最新西安交通大学《编译原理》作业考核试题

安交通大学《编译原理》作业考核试题 一、选择题 1. 设有文法G[S]:S→S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有( ) A. ab0 B. a0c01 C. a0b0a [正确]D. bc10 满分:2 分 2. 设G为算符优先文法,G的任意终结符对a、b有以下关系成立()。 A. 若f(a)>g(b),则a>b B. 若f(a)

D. goto子表中也有rj 满分:2 分 8. 使用三元式是为了()。 A. 便于代码优化处理 [正确]B. 避免把临时变量填入符号表 C. 节省存储代码的空间 D. 提高访问代码的速度 满分:2 分 9. 识别上下文无关语言的自动机是( ) A. 下推自动机 B. NFA [正确]C. DFA D. 图灵机 满分:2 分 10. 在LR分析法中,分析栈中存放的状态是识别规范句型( )的DFA状态。 A. 句柄 B. 前缀 [正确]C. 活前缀 D. LR(0)项目 满分:2 分 11. 描述一个语言的文法是( ) A. 唯一的 [正确]B. 不唯一的 C. 可能唯一 D. 都不正确 满分:2 分 12. 编译程序使用( )区别标识符的作用域。 A. 说明标识符的过程或函数名 [正确]B. 说明标识符的过程或函数的静态层次 C. 说明标识符的过程或函数的动态层次 D. 标识符的行号 满分:2 分 13. 使用()可以定义一个程序的意义。 [正确]A. 语义规则 B. 词法规则 C. 产生规则 D. 词法规则 满分:2 分 14. 在整个编译期间,对符号表的操作大致都有()。 A. 查询给定名字 [正确]B. 填入新名字 C. 访问给定名字的信息 D. 更新给定名字的信息 满分:2 分

合肥工业大学编译原理期末复习

编译原理基础题 一、选择题 1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部( A)错误和部分语义错误。 A、语法 B、语义 C、语用 D、运行 2、编译过程中,语法分析器的任务是( B)。 (1)分析单词是怎样构成的; (2)分析单词串是如何构成语句和说明的; (3)分析语句和说明是如何构成程序的;(4)分析程序的结构 A、(2)(3) B、(2)(3)(4) C、(1)(2)(3) D、(1)(2)(3)(4) 3.生成能被5整除的正整数的文法G[Z]是_ C____。 A. G[Z]: Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5 B. G[Z]: Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5 C. G[Z]:Z→DA0|A5,A→BA|ε,B→0|D,D→1|2|…|9 D. G[Z]:Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|5 4、编译程序中的语法分析器接受以( C)为单位的输入,并产生有关信息供以后各阶段使用。 A、表达式 B、产生式 C、单词 D、语句 5、算符优先分析法每次都是对( D)进行归约。 A、直接短语 B、句柄 C、素短语 D、最左素短语 6、过程调用时,参数的传递方法通常有( C )。 (1)传值;(2)传地址;(3)传结果;(4)传名 A、(1)(2) B、(1)(2)(3) C、(1)(2)(4) D、(1)(2)(3)(4) 7、在编译方法中,动态存储分配的含义是( A )。 A、在运行阶段对源程序中的量进行分配 B、在编译阶段对源程序中的量进行分配 C、在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变 D、以上都不对 8、a:= a+b*c↑(d/e)/f的逆波兰记号表示是()。 A、aabc*+↑de/f/:= B、aabcde↑/*f/:= C、aabcde/↑*f/+:= D、以上都不对。 9.算符文法是指 A 的文法。 ①没有形如U→...VW...的规则(U,V,W VN) ②VT中任意两个符号之间至多存在一种算符优先关系

编译原理实验指导

编译原理实验指导书 主编:徐静李娜 信息与电气工程学院 2010年3月

概述 一、本课程实验的目的和任务 编译原理是一门实践性很强的课程,只有通过实践,才能真正掌握。实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化编译过程的办法,选择最关键的3个环节──词法分析、语法分析(包括语义处理、产生无优化的目标指令)、连接调试,进行编程和调试训练。每个环节作为一个实践课题。先分别编程调试,再连接在一起总调。 二、实验方法 任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。故本实验将定义一个简化的语言── C语言的一个子集作为源语言,设计调试出它的编译程序。前后贯穿这一条主线进行实践。每次都可利用课余时间编程,利用上机时间进行输入和调试。 三、实验报告的规范和要求 每个实验完成后写出实验报告。实验报告的内容包括如下内容: 一、实验目的 二、程序设计时采用的算法和方法 三、输入的源程序 四、词法分析程序清单和输出结果。 五、心得体会

实验一词法分析 一、实验目的: (1)通过设计编制调试一个具体的词法分析程序,理解词法分析在编译程序中的作用。 (2)加深对有穷自动机模型的理解。 (3)掌握词法分析程序的实现方法和技术。 (4)用C语言对一个简单语言的子集编制一个一遍扫描的程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)。 二、实验预习提示 1. 词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。本实验中,采用的是一类符号一种别码的方式。 2. 单词的BNF表示 <标识符>→ <字母><字母数字串> <字母数字串>→<字母><字母数字串>|<数字> <字母数字串>| <下划线><字母数字串>|ε <无符号整数>→<数字> <数字串> <数字串>→<数字><数字串>|ε <加法运算符>→+ <减法运算符>→- <大于关系运算符>→> <大于等于关系运算符>→>= 3. “超前搜索”方法

相关文档
相关文档 最新文档