当前位置:文档之家› 合肥工业大学编译原理实验 LL(1)分析法

合肥工业大学编译原理实验 LL(1)分析法

合肥工业大学编译原理实验 LL(1)分析法
合肥工业大学编译原理实验 LL(1)分析法

实验题目:LL(1)分析法

免费下载,不客气

班级:

学号:

姓名:

Edited by Magic Yang 完成日期:2013-5-28

一、实验目的

通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。

二、实验内容

◆根据某一文法编制调试LL (1 )分析程序,以便对任意输入的符号串

进行分析。

◆构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分

析程序。

◆分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号

以及LL(1)分析表,对输入符号串自上而下的分析过程。

文法为

(1)E->TG

(2)G->+TG|-TG

(3)G->ε

(4)T->FS

(5)S->*FS|/FS

(6)S->ε

(7)F->(E)

(8)F->i

三、数据结构及生成的算法描述

事先已经构造好的表:

Vn数组------非终结符表

Vt数组------终结符

Gr数组------文法

事先定义的表及变量:

非终结符按照在非终结符中的位置与first集follow集对应

fi二维数组------first集,为真表示该终结符在该行对应的非终结符的first集中

fo二维数组------follow集,为真表示该终结符在该行对应的非终结符的follow 集中

M二维数组------预测分析表

用到的方法:

int or(int i,String s)---返回最近的在其右边一个“|”位置

int vn(char c)---返回c在非终结符表中的位置

int vt(char c)---返回c在终结符表中的位置

void addfi(String s, int j)---求关于某一个产生式的first集

void first(char v)---求非终结符c关于该文法的first集,first调用addfi void fir()---求所以非终结符的first集,fir调用first

void addfo(String s,int j)---求关于某一个产生式的follow集

void follow(char v)---求非终结符v关于该文法的follow集,follow调用addfo

void fol()---求所以非终结符的follow集,fol调用follow

void MM(int j,int i,String s,int m)---将某一个产生式填入预测分析表中void build_M()---构造预测分析表,build_M调用MM

void isright(String s)---分析一个符号串是否符合该文法

四、算法流程图

五、源程序代码和测试的结果

package package_two;

import java.util.*;

import java.io.*;

public class LL {

char Vn[]={'E','T','G','F','S'};//非终结符

char Vt[]={'+','-','*','/','(',')','i','#','ε'};//终结符

//非终结符按照在非终结符中的位置与first集follow集对应

boolean fi[][]=new boolean[Vn.length][Vt.length+1];//first集,为真表示该终结符在该行对应的非终结符的first集中

boolean fo[][]=new boolean[Vn.length][Vt.length+1];//follow集,为真表示该终结符在该行对应的非终结符的follow集中

String M[][]=new String[Vn.length][Vt.length-1];//预测分析表String Gr[]={"E->TG","G->+TG|-TG","G->ε

","T->FS","S->*FS|/FS","S->ε","F->(E)","F->i"};//文法

LL(){

fir();//求first集

fol();//求follow集

build_M();//求预测分析表

}

int or(int i,String s){//返回最近的在其右边一个“|”位置 for(i=i+1;i

if(s.charAt(i)=='|')

return i;//存在,就返回位置

}

return -1;//返回-1表示没有“|”在其右边

}

int vn(char c){//返回c在非终结符表中的位置

int i;

for(i=0;i

if(c==Vn[i])return i;//在表中,就返回位置

}

return -1;//返回-1表示不在表中

}

int vt(char c){//返回c在终结符表中的位置

int i;

for(i=0;i

if(c==Vt[i])return i;//在表中,就返回位置

}

return -1;//返回-1表示不在表中

}

void addfi(String s, int j){//求关于某一个产生式的first集int v=vn(s.charAt(0));//v为产生式左边的非终结符

int i;

if(vt(s.charAt(j))!=-1){//产生式右边第一个为终结符

fi[v][vt(s.charAt(j))]=true;//就把s.charAt(j)加入

s.charAt(0)的first集

}else{//产生式右边第一个为非终结符

if(!fi[vn(s.charAt(j))][Vt.length]){//如果s.charAt(j)的first集没有求,先求s.charAt(j)的first集

first(s.charAt(j));

}

for(i=0;i

if(fi[vn(s.charAt(j))][i]&&Vt[i]!='ε'){

fi[v][i]=true;

}

}

if(vt('ε')!=-1)//终结符中有ε

if(fi[vn(s.charAt(j))][vt('ε')]){//如果ε属于当前

s.charAt(j)的first集

if(j==s.length()-1){//j=s.length()-1就将ε加入

s.charAt(0)的first集

fi[v][vt('ε')]=true;

return ;

}

if(s.charAt(j+1)!='|'){//s.charAt(j+1)不是“|”就将

s.charAt(j+1)的first集加入s.charAt(0)的first集

j++;

addfi(s,j);

}else{//s.charAt(j+1)是“|”就将ε加入s.charAt(0)的first 集

fi[v][vt('ε')]=true;

}

}

}

}

void first(char v){//求非终结符v关于该文法的first集

int i,j;

String s;

for(i=0;i

s=Gr[i];

if(s.charAt(0)==v){//产生式的左边是要求的非终结符

j=3;

if(s.charAt(0)!=s.charAt(j))//要求的非终结符与右边第一个不同时,求first集

addfi(s,j); //求关于此产生式的first集

while(or(j,s)!=-1&&j

{

j=or(j,s);//得到‘|’位置

if(s.charAt(0)!=s.charAt(j+1))//要求的非终结符与右边第一个不同时,求first集

addfi(s,j+1);//求关于此产生式的first集

}

}

}

fi[vn(v)][Vt.length]=true;//将fi[vn(v)][Vt.length]设为true,表示已求v的first集

}

void fir(){//求所以非终结符的first集

int i,j;

for(i=0;i

if(!fi[i][Vt.length]){

first(Vn[i]);

}

}

System.out.println("first集");

for(i=0;i

System.out.println(Vn[i]);

for(j=0;j

if(fi[i][j]){

System.out.print(" "+Vt[j]);

}

}

System.out.println();

}

}

void addfo(String s,int j){//求关于某一个产生式的follow集int i;

//考察字符位于产生式末尾时将产生式左边的那个字符的follow集加到考察字符的follow集中

if(j==s.length()-1||(j

if(!fo[vn(s.charAt(0))][Vt.length]){//产生式左边的非终结符的follow集未求时,先求产生式左边的非终结符的follow集

follow(s.charAt(0));

}

for(i=0;i

if(fo[vn(s.charAt(0))][i]){

fo[vn(s.charAt(j))][i]=true;

}

}

}

}

//将考察字符右边第一个字符的first集加到考察字符的follow集中

if(j

if(vt(s.charAt(j+1))!=-1){//该字符为终结符

if(Vt[vt(s.charAt(j+1))]!='ε')//该字符不为ε,将该字符加入考察字符的follow集中

fo[vn(s.charAt(j))][vt(s.charAt(j+1))]=true;

}else{//该字符不为终结符

for(i=0;i

if(fi[vn(s.charAt(j+1))][i]&&Vt[i]!='ε'){

fo[vn(s.charAt(j))][i]=true;

}

}

if(vt('ε')!=-1){//非终结符中有ε

//当考察字符右边的字符串的first集中有'ε'将产生式左边的那个字符的follow集加到考察字符的follow集中

if(s.charAt(0)==s.charAt(j)) return;////考察字符与产生式左边的非终结符时同时,返回

boolean m=true;//当考察字符右边的字符串的first集中有'ε',m为真,没有时,m为假

for(i=j+1;i

if(vt(s.charAt(i))!=-1){//当考察字符右边的字符串中有终结符,m为假

m=false;

break;

}

if(s.charAt(i)=='|'){//遇到'|'跳出

break;

}

if(!fi[vn(s.charAt(i))][vt('ε')]){//当考察字符右边的字符串中的有一非终结符的first集中不含ε,m为假

m=false;

}

}

if(m){//m为真,将产生式左边的那个字符的follow集加到考察字符的follow集中

if(!fo[vn(s.charAt(0))][Vt.length]){//产生式左边的非终结符的follow集未求时,先求产生式左边的非终结符的follow集

follow(s.charAt(0));

}

for(i=0;i

if(fo[vn(s.charAt(0))][i]){

fo[vn(s.charAt(j))][i]=true;

}

}

}

}

}

}

}

void follow(char v){//求非终结符v关于该文法的follow集if(v=='E'){//v为开始符号时,将#加入v的follow集中

fo[vn(v)][vt('#')]=true;

}

int i,j;

String s;

for(i=0;i

s=Gr[i];

for(j=3;j

if(s.charAt(j)==v){//产生式右边有考察字符

addfo(s,j);//求关于该产生式的follow集

}

}

}

fo[vn(v)][Vt.length]=true;//将fo[vn(v)][Vt.length]设为true,表示已求v的first集

}

void fol(){//求所以非终结符的follow集

int i,j;

for(i=0;i

if(!fo[i][Vt.length]){

follow(Vn[i]);

}

}

System.out.println("follow集");

for(i=0;i

System.out.println(Vn[i]);

for(j=0;j

if(fo[i][j]){

System.out.print(" "+Vt[j]);

}

}

System.out.println();

}

}

void MM(int j,int i,String s,int m){//将某一个产生式填入预测分析表中

char u=Gr[i].charAt(0);

int k;

if(vt(Gr[i].charAt(j))!=-1){//Gr[i].charAt(j)为终结符

if(Gr[i].charAt(j)!='ε')//Gr[i].charAt(j)不为ε时将s加到M[vn(u)][vt(Gr[i].charAt(j))]中

M[vn(u)][vt(Gr[i].charAt(j))]=s;

else {

for(k=0;k

if(fo[vn(u)][k])M[vn(u)][k]=s;

}

}

}else{//Gr[i].charAt(j)为非终结符

for(k=0;k

Gr[i].charAt(j)的first集时,将s加到M[vn(u)][vt(a)]中

if(fi[vn(Gr[i].charAt(j))][k])M[vn(u)][k]=s;

}

if(fi[vn(Gr[i].charAt(j))][vt('ε')]){//当ε属于

Gr[i].charAt(j)的first集时,将属于s的follow集的b将s加到

M[vn(u)][vt(b)]中

if(j==m-1){

for(k=0;k

if(fo[vn(u)][k])M[vn(u)][k]=s;

}

}else{

j=j+1;

MM(j,i,s,m);

}

}

}

}

void build_M(){//构造预测分析表

int i,j,m;

String s;

for(i=0;i

j=3;

while(j

m=or(j,Gr[i]);

if(m==-1){

m=Gr[i].length();

}

s=Gr[i].substring(j, m);//将j到m-1赋值到s MM(j,i,s,m);

j=m+1;

}

}

}

void isright(String s){//分析一个字符串是否符合该文法Stack temp=new Stack();//分析栈

temp.setSize(20);

temp.push(new Character('#'));//初始化将#入栈

temp.push(new Character('E'));//初始化将E入栈

char u,v;

int i=0,j,k=0;

String m,action="初始化",rule=" ";

while(i

u=s.charAt(i);

System.out.print(k+" ");

for(j=0;j

if(temp.get(j)!=null)System.out.print(temp.get(j));//输出分析栈内字符

}

System.out.print(" "+s.substring(i)+" ");//剩余输入串

System.out.print(" "+rule+" ");//所用产生式

System.out.println(action);//动作

v=temp.pop();

action="pop";

if(vn(v)!=-1){//栈顶元素为非终结符时

if(M[vn(v)][vt(u)]!=null){//分析表中有产生式

m=M[vn(v)][vt(u)];

rule=v+"->"+m;

if(!m.equals("ε")){//产生式不为ε

action=action+",push(";

for(j=m.length()-1;j>-1;j--){//将产生式反序入栈

action=action+m.charAt(j);

temp.push(new Character(m.charAt(j)));

}

action=action+")";

}

}else{//分析表中没有产生式,提示错误

rule=" ";

System.out.println("wrong : "+u+"不在"+v+"对应的分析表中");

return;

}

}else{//栈顶元素为终结符时

rule="";

if(v==u){//栈顶元素与输入符匹配

if(v=='#'){//栈顶元素为#时,成功

System.out.println("accept");

return;

}

else {

i++;

action="getnext(I)";

}

}else{//栈顶元素与输入符不匹配,提示错误

System.out.println("wrong : "+u+"与"+v+"不等");

return;

}

}

k++;

}

}

public static void main(String args[])throws IOException{ LL one=new LL();

String s;

BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

s=sin.readLine();

s=s.concat("#");

System.out.println(s);

one.isright(s);

sin.close();

}

}

测试方法和测试结果

测试方法:命令行输入符号串

测试结果:

六、实验的评价、收获与体会

最新东南大学微机试卷-期末-AB

东南大学考试卷 考试科目微机系统与接口考试形式闭卷试卷类型 B卷 考试时间长度120分钟共 5 页得分 一、填空或选择填空(35分) 1. 8086/8088段寄存器的功能是_____________, 某一时刻程序最多可以指定访问________个存储段。 A1.用于计算有效地址B1. 用于存放段起始地址及计算物理地址 C1.分段兼容8080/8085指令D1. 方便分段执行各种数据传送操作 A2. 3 B2. 4 C2. 6D2. 64K E2.初始化时程序指定 2.8086/8088系统中复位信号RESET的作用是使_______ A. 处理器总线休眠 B.处理器总线清零 C. 处理器和协处理器工作同步 D. MPU恢复到机器的起始状态并重新启动 3. 在默认情况下, ADD [DI+100], DI指令中目标操作数存放在______寄存器指定的存储段中,指令执行时将完成______ 个总线操作周期。 A1. CS B1. DS C1. ES D1. SS A2. 0 B2. 1 C2. 2 D2. 3 4. 8086/8088CPU用指令ADD对两个8位二进制数进行加法运算后,结果为14H,且标志位CF=1,OF=1,SF=0,此结果对应的十进制无符号数应为_____ A. 20 B. –20 C. –236 D.276 5.堆栈是内存中的一个专用区域,其一般存取规则是_________ A.先入先出(FIFO) B.先入后出(FILO) C.按字节顺序访问 D.只能利用PUSH/POP指令读写 6. 在下列指令中,使堆栈指针变化8字节的指令是_____. A. PUSHA B. CALL 4000:0008H C. RET 8 D.SUB SP,8

东南大学编译原理试题

东南大学一九九三年攻读硕士学位研究生入学考试试题 试题编号:553 试题名称:编译原理 一:(15分)判断下列命题的真假,并简述理由: 1.文法G的一个句子对应于多个推导,则G是二义的. 2.LL(1)分析必须对原有文法提取左因子和消除左递归. 3.算符优先分析法采用"移近-归约"技术,其归约过程是规范的. 4.文法S→aA;A→Ab;A→b是LR(0)文法(S为文法的开始符号). 5.一个BASIC解释程序和编译程序的不同在于,解释程序由语法制导翻译成目标代码并立即执行之,而编译程序需产生中间代码及优化. 二:(15分)设计一个最小状态有穷自动机,识别由下列子串组成的任意字符串. GO,GOTO,TOO,ON 例如:GOTOONGOTOOGOON是合法字符串. 三:(15分)构造一个LL(1)文法G,识别语言L: L={ω|ω为{0,1}上不包括两个相邻的1的非空串} 并证明你的结论. 四:(20分)设有一台单累加器计算机,并汇编语言含有通常的汇编指令LOAD,STORE,ADD和MUL. 1.写一个递归下降分析程序,将如下文法所定义的赋值语句翻译成汇编语言: A→i:=E E→E+E|E*E|(E)|i 2.利用加,乘法满足交换率这一性质,改进你的分析程序,以期产生比较高效的目标代码. 五:(15分)C为大家熟知的程序语言. 1.C的参数传递采用传值的方式,而且允许函数定义和调用时的参数个数不一致(如printf).请指出其函数调用语句: f(arg1,arg2,...,argn) 翻译成的中间代码序列,并简述其含义. 2.C语言中的变量具有不同的作用范围,试述C应采用的存储分配策略. 六:(20分)设有一个子程序的四元式序列为: (1) I:=1 (2) if I>20 GOTO (16) (3) T1:=2*J (4) T2:=20*I (5) T3:=T1+T2 (6) T4:=addr(A)-22 (7) T5:=2*I (8) T6:=T5*20 (9) T7:=2*J (10) T8:=T6+T7 (11) T9:=addr(A)-22 (12) T10:=T9[T8] (13) T4[T3]:=T10+J

唐益明的简介(合肥工业大学副研究员)_2015年6月

唐益明 合肥工业大学副研究员,博士,硕士生导师,CCF会员、IEEE会员. 学术兼职: 中国计算机学会多值逻辑与模糊逻辑专业委员会委员 中国计算机学会协同计算专业委员会委员 中国人工智能学会粗糙集与软计算专业委员会委员 Associate Editor: Journal of Mathematics and Informatics 审稿人:1) IEEE Transactions on Fuzzy Systems (SCI) 2) Information Sciences (SCI) 3) ISPRS Journal of Photogrammetry and Remote Sensing (SCI) 4) International Journal of Electrical Power & Energy Systems (SCI) 5) Signal Processing (SCI) 6) International Journal of fuzzy Systems (SCI) 7) 计算机学报(EI)主要论著 [1] Yiming Tang, Xiaoping Liu. Differently implicational universal triple I method of (1, 2, 2) type. Computers & Mathematics with Applications, 2010. (SCI, EI) [2] Xiaoping Liu, Yiming Tang, et al. A formal model of collaborative discussion for problem-solving. Chinese Journal of Electronics, 2012. (SCI,EI) [3] Yiming Tang, Fuji Ren, et al. Differently implicational α-universal triple I restriction method of (1, 2, 2) type. Journal of Systems Engineering and Electronics, 2012. (SCI,EI) [4] Yiming Tang, Fuji Ren. Universal triple I method for fuzzy reasoning and fuzzy controller. Iranian Journal of Fuzzy Systems, 2013. (SCI)[1-2] 目录 1简历 2研究方向 3学术兼职 4主要论著 5教学情况 1简历 唐益明,男,1982年出生,合肥工业大学副研究员,博士,硕士生导师,CCF多值逻辑与模糊逻辑专业委员会委员,CCF协同计算专业委员会委员,CAAI

东南大学电路实验实验报告

电路实验 实验报告 第二次实验 实验名称:弱电实验 院系:信息科学与工程学院专业:信息工程姓名:学号:

实验时间:年月日 实验一:PocketLab的使用、电子元器件特性测试和基尔霍夫定理 一、仿真实验 1.电容伏安特性 实验电路: 图1-1 电容伏安特性实验电路 波形图:

图1-2 电容电压电流波形图 思考题: 请根据测试波形,读取电容上电压,电流摆幅,验证电容的伏安特性表达式。 解:()()mV wt wt U C cos 164cos 164-=+=π, ()mV wt wt U R sin 10002cos 1000=??? ? ? -=π,us T 500=; ()mA wt R U I I R R C sin 213.0== =∴,ππ40002==T w ; 而()mA wt dt du C C sin 206.0= dt du C I C C ≈?且误差较小,即可验证电容的伏安特性表达式。 2.电感伏安特性 实验电路: 图1-3 电感伏安特性实验电路 波形图:

图1-4 电感电压电流波形图 思考题: 1.比较图1-2和1-4,理解电感、电容上电压电流之间的相位关系。对于电感而言,电压相位 超前 (超前or 滞后)电流相位;对于电容而言,电压相位 滞后 (超前or 滞后)电流相位。 2.请根据测试波形,读取电感上电压、电流摆幅,验证电感的伏安特性表达式。 解:()mV wt U L cos 8.2=, ()mV wt wt U R sin 10002cos 1000=??? ? ? -=π,us T 500=; ()mA wt R U I I R R L sin 213.0===∴,ππ 40002==T w ; 而()mV wt dt di L L cos 7.2= dt di L U L L ≈?且误差较小,即可验证电感的伏安特性表达式。 二、硬件实验 1.恒压源特性验证 表1-1 不同电阻负载时电压源输出电压 电阻()Ωk 0.1 1 10 100 1000 电源电压(V ) 4.92 4.98 4.99 4.99 4.99 2.电容的伏安特性测量

东南大学编译原理词法分析器实验报告

词法分析设计 1. 实验目的 通过本实验的编程实践,了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。 2. 实验内容 用C++语言实现对C++语言子集的源程序进行词法分析。通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示;同时进行标识符登记符号表的管理。 3. 实验原理 本次实验采用NFA->DFA->DFA0的过程: 对待分析的简单的词法(关键词/id/num/运算符/空白符等)先分别建立自己的FA,然后将他们用产生式连接起来并设置一个唯一的开始符,终结符不合并。 待分析的简单的词法 (1)关键字: "asm","auto","bool","break","case","catch","char","class","

const","const_cast"等 (2)界符(查表) ";",",","(",")","[","]","{","}" (3)运算符 "*","/","%","+","-","<<","=",">>","&","^","|","++","--"," +=","-=","*=","/=","%=","&=","^=","|=" relop: (4)其他单词是标识符(ID)和整型常数(SUM),通过正规式定义。 id/keywords: digit: (5)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

合肥工业大学期末复习

第一章 一、信息经济学的产生 起源于(1959)年马尔萨克的《信息经济学评论》 施蒂格勒——被誉为“信息经济学”和“管制经济学”的创始人。《信息经济学》、《劳动市场的信息》(1962)和《论寡占》 提出“搜寻”概念及其理论方法——施蒂格勒对微观信息经济学的主要贡献。 肯尼思·阿罗——无论何种信息共同具备两个明显特征:信息的使用具有不可分割性、信息难以被独占或垄断。 詹姆斯·莫里斯——经济激励机制问题,建立起(委托人—代理人)关系的基本模型,奠定了委托-代理关系的基本模型框架。 施蒂格利兹——对不完全信息条件下产品市场、资本市场和保险市场中经济行为的分析、信息在社会资源配置中的作用(特别是不利选择和道德风险导致的市场失败问题),以及微观信息市场分析三个领域 笼统地说,信息经济学就是研究经济行为中的信息现象及其规律的学科。 2、直至20世纪20年代。1921年,弗兰克·奈特对不确定性做了开拓性研究。 3、从假设条件角度分析,不确定性经济学主要研究不确定性形成的基础、方式、经济特征及其影响,同时也考虑如何减少不确定性的损失,但是,这种考虑不是建立在广泛研究信息对不确定性限制的基础上。近似地说,不确定性经济学是一门“被动的”信息经济学。 4、不确定性、风险和信息,构成信息经济学三个最基本的概念。 5、可以应用统计方法计算并预测其发生概率的风险,称为可保风险。不能用统计方法或其他方法计算并预测其发生概率的风险,称为不可保风险。 6、不确定性经济学认为,风险的完全不能转移与风险的完全转移一样,都是不经济的。 7、在现代社会中,没有其他制度能够像保险和股票市场那样通过市场并且以十分明确的形式来转移风险。通过保险市场和社会股票市场,企业一方面能够转移其可保风险,另一方面也可以转移其不可保风险。但是,无论企业或社会如何努力,它们都不可能通过保险市场转移其全部的可保风险,也不可能通过社会股票市场完全转移其不可保风险,因为无论是保险市场还是股票市场都存在着自身的局限。 第二章 1、信息的理论定义可近似地表述为:信息就是传递中的知识差。 2、(1)定义反映了信息发生的基础与过程。或者说,信息就是先验概率与后验概率之差。(2)定义揭示了信息价值的基础所在。信息之所以存在价值,关键在于存在知识差,后者能够使经济代理人改善决策环境而获得预期收益。(3)定义揭示了信息与经济知识增长之间的关系,知识差正是这种关系的中介,同时,知识差概念也显示了经济信息收集与处理活动的意义所在。(4)定义表明:信息具有层次性、不可分性和共享性,这是由知识差的层次性、不可分性和共享性决定的(5)定义说明了噪音、信息失真或误差的根本所在,是知识差在传递过程中必然存在绝对的损失。 3、信息商品正式得到社会承认的标志是知识产权的专利制度的确定 4、信息必须经过开发,把各类信息经过加工,整理成有序的、有应用价值的、有共享可能的信息才能成为信息资源 5、信息资源的开发和利用既是独立的又是重合的 信息资源开发和利用程度是衡量国家信息化水平的一个重要标志 信息资源的开发和利用是信息产业持续健康发展的根本保证 信息资源的开发利用不是一个一次性的工程建设问题,而是长期服务问题 政府的统计部门适宜做不进入市场竞争的统计信息服务工作,盈利性信息资源的开发利用交由企业做 第三章 1、1、商店的数量、价格的离散幅度构成市场价格离散的主要影响因素,但起决定作用的是价格在商店中离散的概率分布 2、价格离散幅度达的市场,价格离散率未必比离散幅度小的市场的价格离散率高 3、市场价格离散率不受市场平均价格的影响 2、1 价格离散程度越高,每次搜寻所获节省额就越大,有效搜寻次数就越多。2 购买商品的价格越高,或购买商品的数量越多,就越值得进行搜寻。 第四章 1、在完全竞争的简单模型中,一个生产澄汁的新厂商将会宣布它的产品已经准备好,以市场价格或低于市场价格出

东南大学通信原理试卷及参考答案

东南大学考试卷( A 卷)课程名称通信原理考试学期04-05-3 得分 适用专业考试形式闭卷考试时间长度 150分钟 Section A(30%): True or False (Give your reason if False,2% for each question) 1. A typical mobile radio channel is a free propagation, linear, and time invariant channel. ( ) 2.The power spectral density of a stationary process is always nonnegative. ( ) 3.In a communication system, noise is unwanted and over which we have incomplete control. ( ) 4.If a random process is stationary, it is ergodic; if a Gaussian random process is stationary, then it is also strictly stationary. ( ) 5.Double Sideband-Suppressed Carrier (DSB-SC), Single Sideband (SSB), and Frequency Modulation (FM) are all linear modulation schemes. ( ) 6.Figure of merit (defined as (SNR)O/(SNR)C) of AM of DSB-SC is 1/3, and figure of merit of Amplitude Modulation (AM) is less than or equal to 1/3. ( ) 7. -law is a nonlinear compression law and A-law is a linear compression law. ( ) 8.The matched filter at the receiver maximizes the peak pulse signal-to-noise ratio, thus is optimal in a baseband data transmission system with Inter-Symbol Interference (ISI). ( ) 9.Correlative-level coding (also known as partial-response signaling) schemes are used to avoid ISI. ( ) 10.Time-Division Multiplexing (TDM) is used in Asymmetric Digital Subscriber Lines (ADSL) to separate voice signals and data transmission. ( ) 11.If coefficients of an equalizer is adjusted using the Least-Mean-Square (LMS) algorithm adaptively, then the matched filter in front of the equalizer is not necessary. ( ) 12.In an M-ary Phase-Shift Keying (M-PSK) system, if the average probability of symbol error is P e, then the average Bit Error Rate (BER) of the system is P e/log2M. ( ) 13.With the same Signal-to-Noise Ratio (SNR), 16-ary Quadrature Amplitude Modulation (16-QAM) has better performance than 16-ary Phase-Shift Keying (16-PSK). The reason is that 16-QAM has constant envelop. ( ) 14.With the same SNR, Minimum Shift Keying (MSK) has better performance than Sunde’s Frequency-Shift Keying (FSK). They are both Continuous-Phase Frequency-Shift Keying (CPFSK). ( ) 15.If the largest frequency component of an band-limited signal X(t) is at 100 Hz, then the corresponding Nyquist rate is 200 Hz. ( ) 共 5 页第1 页

合肥工业大学信息隐藏实验报告 完整代码版.

计算机与信息学院 信息隐藏实验报告 专业班级 信息安全13-1班 学生姓名及学号 马骏 2013211869 课程教学班号 任课教师 郑淑丽 实验指导教师 郑淑丽 实验地点 20 ~20 学年第学期

实验1 BMP位图信息隐藏 一、实验目的 学习BMP格式文件,并编程实现对位图文件信息隐藏 二、实验要求 将TXT文件嵌入BMP 文件中 三、问题描述 1、BMP位图文件的格式? 2、有哪几种方法隐藏信息,分别采用什么样的数据结构 3、随机选取如何避免“碰撞”的出现 四、算法思想 1、BMP位图文件格式 0000h~0001h 2字节-------------------------bm的ASC码 0002h~0005h 4字节-------------------------文件大小102718字节 0006h~0009h 4字节-------------------------全为0 000Ah~000Dh 4字节-------------------------偏移量118字节 000Eh~0011h 4字节-------------------------位图信息块大小40字节 0012h~0015h 4字节-------------------------宽450 0016h~0019h 4字节-------------------------高450 001Ah~001Bh 2字节-------------------------恒为01h 00h 001Ch~001Dh 2字节-------------------------颜色所占二进制位数值04h 00h=4 16色位图 001Eh~0021h 4字节-------------------------压缩方式=0无压缩 0022h~0025h 4字节-------------------------图像数据区大小102600字节 0026h~0029h 4字节-------------------------水平每米多少像素39个 002Ah~002Dh 4字节-------------------------垂直每米多少像素39个 002Eh~0031h 4字节-------------------------图像所用颜色数=0 0032h~0035h 4字节-------------------------重要颜色数=0 0036h~0076h 64字节-------------------------颜色表

东南大学数字通信试卷(附答案)

东南大学考试卷(A卷) 课程名称 数 字 通 信 考试学期 04-05-2得分 适用专业无线电工程系 考试形式闭 卷 考试时间长度120分钟共 页 Section A:True or False (15%) 1. 1.When the period is exactly 2m, the PN sequence is called a maximal-length-sequence or simply m-sequence. 2. 2.For a period of the maximal-length sequence, the autocorrelation function is similar to that of a random binary wave. 3. 3.For slow-frequency hopping,symbol rate R s of MFSK signal is an integer multiple of the hop rate R h. That is, the carrier frequency will change or hop several times during the transmission of one symbol. 4. 4.Frequency diversity can be done by choosing a frequency spacing equal to or less than the coherence bandwidth of the channel. 5. 5.The mutual information of a channel therefore depends not only on the channel but also on the way in which the channel used. 6. 6.Shannon’s second theorem specifies the channel capacity C as a fundamental limit on the rate at which the transmission of reliable error-free messages can take place over a discrete memoryless channel and how to construct a good code. 7.7.The syndrome depends not only on the error pattern, but also on the transmitted code word. 8.8.Any pair of primitive polynomials of degree m whose corresponding shift registers generate m-sequences of period 2m-1 can be used to generate a Gold sequence. 9.9.Any source code satisfies the Kraft-McMillan inequality can be a prefix code. 10.10.Let a discrete memoryless source with an alphabet ? have entropy H? and produce symbols once every s T seconds. Let a discrete () memoryless channel have capacity and be used once every C c T

合肥工业大学编译原理 LL(1)自上而下文法分析

合肥工业大学计算机与信息学院计算机系2013级 编译原理课程设计报告 姓名:马骏 专业年级:信息安全13-1 学号:2013211869 提交时间:2016年07月

一、实验题目 自上而下的LL(1)文法分析 二、实验目的 了解掌握自上而下的LL(1)文法分析过程。 二、实验内容与要求 从语法分析树构造句型所有的推导的程序实现,接受用户任意输入的一个句型的语法分析树(其表示存于指定文件中),生成该语法分析树中包含的该句型的所有推导(显示输出)。构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。在此基础上,构造一程序,实现教材P.79的FOLLOW(A)集合的构造算法。对任一给定的文法G,程序输出所有非终结符A的FOLLOW (A)。对于给定的一个LL(1)文法,假定所有非终结符号P的集合FIRST(P)和集合FOLLOW(P)都已知,构造其预测分析表(实现教材P.79给出的预测分析表构造算法)。对教材P.79给出的例4.7构造出预测分析表。程序显示输出预测分析表或输出到指定文件中。首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再实现教材P.79给出的预测分析表构造算法。程序显示输出预测分析表或输出到指定文件中。 对文法按教材P.76表4.1构造出G的预测分析程序,程序显示输出如P.78那样的匹配过程。 三、实验环境与工具 操作系统:Windows 7 开发语言:C++ 四、开发过程 1)字符要求: 你的程序必须能够根据以下字符来处理语法: - 终端字符:字母,数字,符号例如“+”,“—”,…; - 非终端字母表中的大写字母。 符号“=”,“|”和“#”(替换“ε”,因为它更容易输入到文本文件)被保留用于语法的描述中,因此不能被用作终端。 2)初始状态 您的程序通过读取一个文件中的“文本”格式开始。 这个文件的结构可以随意构建,不做要求,但建议做成简单的。 例如,程序描述以下语句: E = E + T |T T = T * F |F F =(E)| 0 |1 在这种情况,我们可以很容易确定E,T和F是非终端,而符号“(”,“)”,“*”和“+”和数字“0”和“1”是在终端。 第一个非终端(第一衍生物)被认为是语法的公理。

东南大学计算方法与实习上机实验一

东南大学计算方法与实习实验报告 学院:电子科学与工程学院 学号:06A12528 姓名:陈毓锋 指导老师:李元庆

实习题1 4、设S N=Σ (1)编制按从大到小的顺序计算S N的程序; (2)编制按从小到大的顺序计算S N的程序; (3)按两种顺序分别计算S1000,S10000,S30000,并指出有效位数。 解析:从大到小时,将S N分解成S N-1=S N-,在计算时根据想要得到的值取合适的最大的值作为首项;同理从小到大时,将S N=S N-1+ ,则取S2=1/3。则所得式子即为该算法的通项公式。 (1)从大到小算法的C++程序如下: /*从大到小的算法*/ #include #include #include using namespace std; const int max=34000; //根据第(3)问的问题,我选择了最大数为34000作为初值 void main(){ int num; char jus; double cor,sub; A: cout<<"请输入你想计算的值"<<'\t'; cin>>num; double smax=1.0/2.0*(3.0/2.0-1.0/max-1.0/(max+1)),temps; double S[max]; // cout<<"s["<num;){ temps=smax; S[n]=temps; n--; smax=smax-1.0/((n+1)*(n+1)-1.0); } cor=1.0/2.0*(3.0/2.0-1.0/num-1.0/(num+1.0)); //利用已知精确值公式计算精确值sub=fabs(cor-smax); //double型取误差的绝对值 cout<<"用递推公式算出来的s["<>jus; if ((int)jus==89||(int)jus==121) goto A; }

编译原理实验报告-合肥工业大学版

编译原理实验报告 合肥工业大学计算机科学与技术 完成日期:2013.6.3 实验一词法分析设计 一、实验功能:

对输入的txt文件内的内容进行词法分析: 由文件流输入test.txt中的内容, 对文件中的各类字符进行词法分析 打印出分析后的结果; 二、程序结构描述:(源代码见附录) 1、利用Key[]进行构造并存储关键字表;利用optr[]进行构造并存储运算符表;利用separator[]进行构造并存储分界符表; 2、bool IsKey(string ss) {}判断是否是关键字函数若是关键字返回true,否则返回false; bool IsLetter(char c) {}判断当前字符是否字母,若是返回true,否则返回false; bool IsDigit(char c) {}判断当前字符是否是数字,若是返回true,否则返回false; bool IsOptr(string ss) {}判断当前字符是否是运算符,若是返回true,否则返回false; bool IsSeparator(string ss) {}判断当前字符是否是分界符,若是返回true,否则返回false; void analyse(ifstream &in) {}分析函数构造; 关系运算符通过switch来进行判断; 三、实验结果

实验总结: 词法分析的程序是自己亲手做的,在实现各个函数时花了不少功夫, 1、要考虑到什么时候该退一字符,否则将会导致字符漏读甚至造成字符重复读取。 2、在实现行数和列数打印时要考虑到row++和line++应该放在什么位置上才可以,如当读取一个\n时line要增加一,而row需要归0处理,在读取某一字符串或字符后row需要加一; 3、对于关系运算符用switch结构进行选择判断即可解决一个字符和两个字符的运算符之间的差异; 4、将自己学过的知识应用到实践中是件不怎么容易的事情,只有亲身尝试将知识转化成程序才能避免眼高手低,对于知识的理解也必将更加深刻。

合肥工业大学编译原理实验

宣城校区 实验报告 课程名称编译原理 专业班级计算机0001班 学生姓名及学号赵保飞 68 指导教师李芒宏 实验地点计算机中心楼第四机房 2017 ~ 2018 学年第一学期

《编译原理》课程实验报告实验名称词法分析设计 姓名赵保飞系院专业计算机科学 与技术 班级 计算机01 班 学号68 实验日期指导教师李芒宏成绩 一、实验目的和要求 通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设 计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的 理解,并能正确地、熟练地运用。 二、实验原理 (1)实验数据结构说明 K[]String数组-关键字表;s[]char数组—分界符;m[]char数组—算术运算符;r[]String数组—关系运算符;ArrayList型String数组ci—常数;ArrayList型String数组id—标识符(2)实验算法描述 (3)算法流程图

三、源程序代码和测试结果 package lexicalAnalysis; import.*; import.*; public class lexicalAnalysis{ static String k[]={"for","main","if","while","void","public","static","printf","scanf","asm","do","return","typedef ","auto","double","break","short","using","default","long"};ength()==1){quals(b))){ display(4,r[i],' ');ength()==2){quals(a))){

合工大汇编语言程序设计实验报告

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级:**************** 学号:********** 姓名:***** 目录

实验一 (3) 实验二 (7) 实验三 (12) 实验四 (22)

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 实验内容一: e ds:0200 E7 1A 3F 00 e ds:0204 C4 E5 6B 00 实验内容二: (1)直接寻址方式 MOV AX,[0200] MOV BX,[0202] ADD AX,[0204] ADC BX,[0206] MOV [0208],AX MOV [020A],BX (2)寄存器间接寻址方式 MOV SI,0200H MOV DI,0204H MOV BX,0208H MOV AX,[SI] MOV DX,[SI+2] ADD AX,[DI] ADC DX,[DI+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中任意两个符号之间至多存在一种算符优先关系

东南大学系统实验报告

实验八:抽样定理实验(PAM ) 一. 实验目的: 1. 掌握抽样定理的概念 2. 掌握模拟信号抽样与还原的原理和实现方法。 3. 了解模拟信号抽样过程的频谱 二. 实验内容: 1. 采用不同频率的方波对同一模拟信号抽样并还原,观测并比较抽样信号及还原信号的波形和频谱。 2. 采用同一频率但不同占空比的方波对同一模拟信号抽样并还原,观测并比较抽样信号及还原信号的波形和频谱 三. 实验步骤: 1. 将信号源模块、模拟信号数字化模块小心地固定在主机箱中,确保电源接触良好。 2. 插上电源线,打开主机箱右侧的交流开关,在分别按下两个模块中的电源开关,对应的发光二极管灯亮,两个模块均开始工作。 3. 信号源模块调节“2K 调幅”旋转电位器,是“2K 正弦基波”输出幅度为3V 左右。 4. 实验连线 5. 不同频率方波抽样 6. 同频率但不同占空比方波抽样 7. 模拟语音信号抽样与还原 四. 实验现象及结果分析: 1. 固定占空比为50%的、不同频率的方波抽样的输出时域波形和频谱: (1) 抽样方波频率为4KHz 的“PAM 输出点”时域波形: 抽样方波频率为4KHz 时的频谱: 50K …… …… PAM 输出波形 输入波形

分析: 理想抽样时,此处的抽样方波为抽样脉冲,则理想抽样下的抽样信号的频谱应该是无穷多个原信号频谱的叠加,周期为抽样频率;但是由于实际中难以实现理想抽样,即抽样方波存在占空比(其频谱是一个Sa()函数),对抽样频谱存在影响,所以实际中的抽样信号频谱随着频率的增大幅度上整体呈现减小的趋势,如上面实验频谱所示。仔细观察上图可发现,某些高频分量大于低频分量,这是由于采样频率为4KHz ,正好等于奈奎斯特采样频率,频谱会在某些地方产生混叠。 (2) 抽样方波频率为8KHz 时的“PAM 输出点”时域波形: 2KHz 6K 10K 14K 输入波形 PAM 输出波形

东南大学电子技术基础模拟部分试卷 答案

一、填空题(20分,每空1分) 1.双极型三极管是 控制器件,当其工作在放大区时发射结需要加 偏置,集电结需要加 偏置。场效应管是 控制器件。 2. 在有源滤波器中,运算放大器工作在 区;在滞回比较器中,运算放大器工 作在 区。 3. 在三极管多级放大电路中,已知A u1=20,A u2=-10,A u3=1,则可知其接法分别为: A u1是 放大器,A u2是 放大器,A u3是 放大器。 4. 在双端输入、单端输出的差动放大电路中,发射极R e 公共电阻对 信号的 放大作用无影响,对 信号具有抑制作用。差动放大器的共模抑制比K CMR = 。 5. 设某一阶有源滤波电路的电压放大倍数为 2001200 f j A += ,则此滤波器为 滤波器,其通带放大倍数为 ,截止频率为 。 6. 如图所示的功率放大电路处于 类工作状态;其静态损耗为 ;电路的 最大输出功率为 ;每个晶体管的管耗为最大输出功率的 倍。 二、基本题:(每题5分,共25分) 1.如图所示电路中D 为理想元件,已知u i = 5sin ωt V ,试对应u i 画出u o 的波形图。 2.测得电路中NPN 型硅管的各级电位如图所示。试分析管子的工作状态(截止、饱和、放 大)。 3. 已知BJT 管子两个电极的电流如图所示。求另一电极的电流,说明管子的类型(NPN 或PNP )并在圆圈中画出管子。 4.如图所示电路中,反馈元件R 7构成级间负反馈,其组态为 ; 其作用是使输入电阻 、放大电路的通频带变 。 三、如图所示电路中,β=100,Ω='100b b r ,试计算:(15分) 1.放大电路的静态工作点;(6分) 2.画出放大电路的微变等效电路;(3分) 3.求电压放大倍数A u 、输入电阻R i 和输出电阻R o ;(6分) 四、判断如图所示电路中引入了何种反馈,并在深度负反馈条件下计算闭环放大倍数。 (9分) 五、电路如图所示。试用相位条件判断下面的电路能否振荡,将不能振荡的电路加以改正。 (6分) 六、用理想运放组成的电压比较器如图所示。已知稳压管的正向导通压降U D =0.7V ,U Z = 5V 。 1.试求比较器的电压传输特性; 2.若u i =6sin ωt V ,U R 为方波如图所示,试画出u o 的波形。 (10分) 七、理想运放电路如图所示,设电位器动臂到地的电阻为KR W ,0≤K ≤1。试求该电路电压 增益的调节范围。 (10分) 八、一串联型稳压电路如图所示。已知误差放大器的A u >>1,稳压管的U z =6V ,负载R L =20Ω。 1.试标出误差放大器的同相、反相端; 2.说明电路由哪几部分组成? 3.求U o 的调整范围; (10分) 参考答案 一、 1.电流、正向、反向;电压。 2.线性、非线性。

相关主题
文本预览
相关文档 最新文档