编译原理问题,高手进。

作者&投稿:邰宣 (若有异议请与网页底部的电邮联系)
VC++问题!编译原理兼编程高手进~~!~

我有做过,给你吧,记得加分哦

#include
#include
#include

#define buf 20
#define MAXBUF 255

typedef struct Token
{
int label;
char name[buf];
int code;
}Token;

typedef struct Symbol_i
{
int symbol_i;
int state;
}Symbol_i;

int Getsymbol();
void ERROR();
void S(); //S->while (B) S | i=E
void B(); //B->E relop E
void relop(); //relop->
void E(); //E->(E)F | iF | nF
void F(int A); //F->+EF | -EF | *EF | /EF | ε
void F();

char sym,ch;
int symbol_L=0,symbol_L1=0,symbol_L2=0,symbol_L3=0,symbol_L4=0;
int l,l1,l2,l3,l4;
int L_i=0,S_i=0,B_i=0,E_i=0,F_i=0,relop_i=0,i_i=0,n_i=0;
int k=0;
int re,n=0,t=0;
int i1=0,i2=0,i3=0,i4=0;
char *wh="while";
Token token1[MAXBUF],token2[MAXBUF];
Symbol_i L[MAXBUF],L1[MAXBUF],L2[MAXBUF],L3[MAXBUF],L4[MAXBUF];

FILE *input;
FILE *output;

int strcmp(char *s,char *t)
{
for(;*s==*t;s++,t++)
if(*s==0) return 0;
return 1;
}

void main()
{
if((input=fopen("input.txt","rt"))==NULL)
printf("cannot open input file
");
if((output=fopen("output.txt","wt+"))==NULL)
printf("cannot open output file
");

for(int i=0;i<MAXBUF;i++)
for(int j=0;j<buf;j++)
{
token1[i].name[j]='\0';
token1[i].name[j]='\0';
}

for(int j=0;j<MAXBUF;j++)
{
L[j].symbol_i=-1;
L[j].state=0;
L1[j].symbol_i=-1;
L1[j].state=0;
L2[j].symbol_i=-1;
L2[j].state=0;
L3[j].symbol_i=-1;
L3[j].state=0;
L4[j].symbol_i=-1;
L4[j].state=0;
}
sym=fgetc(input);
S();
cout<<"Lnext: exit"<<endl;
fprintf(output,"%s","Lnext: exit");
cout<<endl;
if(k==1)
{
cout<<"分析结束!"<<endl;
cout<<"成功分析!"<<endl;
}
}

int Getsymbol()
{
while(sym!=EOF)
{
if((sym>='a'&&sym='A'&&sym<='Z'))
{
int h1=0;
while((sym>='a'&&sym='A'&&sym='0'&&sym<='9'))
{
token1[t].name[i1++]=sym;
n=t;
sym=fgetc(input);
}
h1=strcmp(token1[t].name,wh);
t++;
i3=i1;
i1=0;
if(!h1)
return 16; //返回while给主程序
else
return 13;
} //已经取了下一个字符
else
if(sym>='0'&&sym<='9')
{
while(sym>='0'&&sym<='9')
{
token2[t].name[i2++]=sym;
n=t;
sym=fgetc(input);
}
t++;
i4=i2;
i2=0;
return 12;
}
else
if(sym=='/')
{
sym=fgetc(input);
ch='/';
return 1;
}
else
if(sym=='*')
{
sym=fgetc(input);
ch='*';
return 2;
}
else
if(sym=='-')
{
sym=fgetc(input);
ch='-';
return 3;
}
else
if(sym=='+')
{
sym=fgetc(input);
ch='+';
return 4;
}
else
if(sym=='(')
{
sym=fgetc(input);
return 15;
}
else
if(sym==')')
{
sym=fgetc(input);
return 14;
}
else
if(sym=='<')
{
sym=fgetc(input);
ch='<';
return 9;
}
else
if(sym=='=')
{
sym=fgetc(input);
ch='=';
return 10;
}
else
if(sym=='>')
{
sym=fgetc(input);
ch='>';
return 11;
}
else
if(sym==';'&&k!=1)
{
ch=';';
k=1;
return 20;
break;
}
else
if(k!=1)
{
sym=fgetc(input);
}

}
return 0;
}

void S() //S->while (B) S | i=E
{
re=Getsymbol();//cout<<re<<" S"<<endl;

if(re==16)//
{
cout<<"L"<<L_i<<": "<<"if ( B"<<B_i<<" ) goto L"<<L_i+1<<endl;
fprintf(output,"%s%d%s%d%s%d%s","L",L_i,": if ( B",B_i," ) goto L",L_i+1,"
");
cout<<" else goto Lnext"<<endl;
fprintf(output,"%s","else goto Lnext

");
L_i++;
//cout<<endl;
re=Getsymbol();//cout<<re<<" S"<<endl;

if(re==15)
{
B();
if(re==14)
S();
else
ERROR();
}
else
ERROR();
}
else
if(re==13)
{
cout<<"L"<<L_i<<": "<<"i"<<i_i<<" = E"<<E_i<<endl;
fprintf(output,"%s%d%s%d%s%d%s","L",L_i,": i",i_i," = E",E_i,"

");
L_i++;
//cout<<endl;
cout<<" i"<<i_i<<":=";
fprintf(output,"%s%d%s"," i",i_i,":=");
for(int i=0;i<=i3;i++)
if(token1[n].name[i]!='\0')
{
cout<<token1[n].name[i];
fprintf(output,"%c",token1[n].name[i]);
}
i_i++;
cout<<endl;//<<endl;
fprintf(output,"%s","

");

re=Getsymbol();//cout<<re<<" S"<<endl;
if(re==10)
E();
else
ERROR();
}
else
ERROR();
}

void B() // //B->E relop E
{
cout<<" B"<<B_i<<":=E"<<E_i<<" relop"<<relop_i<<" E"<<E_i+1<<endl;
fprintf(output,"%s%d%s%d%s%d%s%d%s"," B",B_i,":=E",E_i," relop",relop_i," E",E_i+1,"

");
//cout<<endl;
B_i++;
E();
relop();
E();
}

void relop() //relop->
{
if(re==9)
{
cout<<" relop"<<relop_i<<":= <"<<endl;
fprintf(output,"%s%d%s"," relop",relop_i,":= <

");
relop_i++;
//cout<<endl;
}//cout<<re<<" relop"<<endl;
else
if(re==10)
{
cout<<" relop"<<relop_i<<":= ="<<endl;
fprintf(output,"%s%d%s"," relop",relop_i,":= =

");
relop_i++;
//cout<<endl;
}//cout<<re<<" E"<<endl;
else
if(re==11)
{
cout"<<endl;
fprintf(output,"%s%d%s"," relop",relop_i,":= >

");
relop_i++;
//cout<<endl;
}//cout<<re<<" E"<<endl;
else
ERROR();
}

void E() //E->(E)F | iF | nF
{
re=Getsymbol() ;//cout<<re<<" E"<<endl;
if(re==15)
{
cout<<" E"<<E_i<<":=( E"<<E_i+1<<" ) F"<<F_i<<endl;
fprintf(output,"%s%d%s%d%s%d%s"," E",E_i,":=( E",E_i+1," ) F",F_i,"

");
E_i++;
L[symbol_L].symbol_i=F_i;//L=F_i;
l=symbol_L;
symbol_L++;
F_i++;
//cout<<endl;
E();
if(re==14)
{
re=Getsymbol();//cout<<re<<" E"<<endl;
if(re==4||re==3||re==2||re==1||re==20)
{
while(l>=0)
{
if(L[l].state==0)
{
F(L[l].symbol_i);
L[l].state=1;
}
else
{
l--;
}
}
}
else
F();
}
else
ERROR();
}
else
if(re==12)
{
cout<<" E"<<E_i<<":="<<"n"<<n_i<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s%d%s%d%s"," E",E_i,":=n",n_i," F",F_i,"

");
//cout<<endl;
E_i++;

cout<<" n"<<n_i<<":=";
fprintf(output,"%s%d%s"," n",n_i,":=");
for(int i=0;i<=i4;i++)
{
cout<<token2[n].name[i];
fprintf(output,"%c",token2[n].name[i]);
}
cout<<endl;//<<endl;
fprintf(output,"%s","

");
n_i++;

re=Getsymbol();//cout<<re<<" E"<<endl;
if(re==4||re==3||re==2||re==1)
F();
else
F(F_i);
}
else
if(re==13)
{
cout<<" E"<<E_i<<":="<<"i"<<i_i<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s%d%s%d%s"," E",E_i,":=i",i_i," F",F_i,"

");
E_i++;
//cout<<endl;
cout<<" i"<<i_i<<":=";
fprintf(output,"%s%d%s"," i",i_i,":=");
for(int i=0;i<=i3;i++)
if(token1[n].name[i]!='\0')
{
cout<<token1[n].name[i];
fprintf(output,"%c",token1[n].name[i]);
}
cout<<endl;//<<endl;
fprintf(output,"%s","

");
i_i++;

re=Getsymbol();//cout<<re<<" E"<<endl;
if(re==4||re==3||re==2||re==1)
F();
else
F(F_i);
}
else
ERROR();
}

void F(int A) //F->+EF | -EF | *EF | /EF | ε
{
if(re==4)
{
cout<<" F"<<A<<":="<<"+ E"<<E_i;
fprintf(output,"%s%d%s%d"," F",A,":=+ E",E_i);
F_i++;
L1[symbol_L1].symbol_i=F_i;//L1=F_i;
l1=symbol_L1;
symbol_L1++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l1>=0)
{
if(l1[L1].state==0&&L1[l1].symbol_i!=-1)
{

F(L1[l1].symbol_i);
L1[l1].state=1;
}
else
{
l1--;
}
}
}
else
if(re==3)
{
cout<<" F"<<A<<":="<<"- E"<<E_i;
fprintf(output,"%s%d%s%d"," F",A,":=- E",E_i);
F_i++;
L2[symbol_L2].symbol_i=F_i;//L2=F_i;
l2=symbol_L2;
symbol_L2++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l2>=0&&L2[l2].symbol_i!=-1)
{
if(L2[l2].state==0)
{

F(L2[l2].symbol_i);
L2[l2].state=1;
}
else
{
l2--;
}
}
}
else
if(re==2)
{
cout<<" F"<<A<<":="<<"* E"<<E_i;
fprintf(output,"%s%d%s%d"," F",A,":=* E",E_i);
F_i++;
L3[symbol_L3].symbol_i=F_i;//L3=F_i;
l3=symbol_L3;
symbol_L3++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l3>=0&&L3[l3].symbol_i!=-1)
{
if(L3[l3].state==0)
{

F(L3[l3].symbol_i);
L3[l3].state=1;
}
else
{
l3--;
}
}
}
else
if(re==1)
{
cout<<" F"<<A<<":="<<"/ E"<<E_i;
fprintf(output,"%s%d%s%d"," F",A,":=/ E",E_i);
F_i++;
L4[symbol_L4].symbol_i=F_i;//L4=F_i;
l4=symbol_L4;
symbol_L4++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
// cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l4>=0&&L4[l4].symbol_i!=-1)
{
if(L4[l4].state==0)
{

F(L4[l4].symbol_i);
L4[l4].state=1;
}
else
{
l4--;
}
}
}
else
if(re==20)
{
cout<<" F"<<A<<":=ε"<<endl;
fprintf(output,"%s%d%s"," F",A,":=ε

");
F_i++;
//cout<<endl;
re=-1;
}
else
{
cout<<" F"<<A<<":=ε"<<endl;
fprintf(output,"%s%d%s"," F",A,":=ε

");
if((symbol_L<=l)&&(symbol_L1<=l1)&&(symbol_L2<=l2)&&(symbol_L3<=l3)&&(symbol_L4<=l4))
F_i++;
//cout<<endl;
}
}

void F() //F->+EF | -EF | *EF | /EF | ε
{
if(re==4)
{
cout<<" F"<<F_i<<":="<<"+ E"<<E_i;
fprintf(output,"%s%d%s%d"," F",F_i,":=+ E",E_i);
F_i++;
L1[symbol_L1].symbol_i=F_i;//L1=F_i;
l1=symbol_L1;
symbol_L1++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l1>=0&&L1[l1].symbol_i!=-1)
{
if(L1[l1].state==0)
{

F(L1[l1].symbol_i);
L1[l1].state=1;
}
else
{
l1--;
}
}
}
else
if(re==3)
{
cout<<" F"<<F_i<<":="<<"- E"<<E_i;
fprintf(output,"%s%d%s%d"," F",F_i,":=- E",E_i);
F_i++;
L2[symbol_L2].symbol_i=F_i;//L2=F_i;
l2=symbol_L2;
symbol_L2++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l2>=0&&L2[l2].symbol_i!=-1)
{
if(L2[l2].state==0)
{

F(L2[l2].symbol_i);
L2[l2].state=1;
}
else
{
l2--;
}
}
}
else
if(re==2)
{
cout<<" F"<<F_i<<":="<<"* E"<<E_i;
fprintf(output,"%s%d%s%d"," F",F_i,":=* E",E_i);
F_i++;
L3[symbol_L3].symbol_i=F_i;//L3=F_i;
l3=symbol_L3;
symbol_L3++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l3>=0&&L3[l3].symbol_i!=-1)
{
if(L3[l3].state==0)
{

F(L3[l3].symbol_i);
L3[l3].state=1;
}
else
{
l3--;
}
}
}
else
if(re==1)
{
cout<<" F"<<F_i<<":="<<"/ E"<<E_i;
fprintf(output,"%s%d%s%d"," F",F_i,":=/ E",E_i);
F_i++;
L4[symbol_L4].symbol_i=F_i;//L4=F_i;
l4=symbol_L4;
symbol_L4++;
cout<<" F"<<F_i<<endl;
fprintf(output,"%s%d%s"," F",F_i,"

");
F_i++;
//cout<<endl;
E();
if(re==4||re==3||re==2||re==1)
F();
else
while(l4>=0&&L4[l4].symbol_i!=-1)
{
if(L4[l4].state==0)
{

F(L4[l4].symbol_i);
L4[l4].state=1;
}
else
{
l4--;
}
}
}
else
{
cout<<" F"<<F_i<<":=ε"<<endl;
fprintf(output,"%s%d%s"," F",F_i,":=ε");
F_i++;
//cout<<endl;
}
}

void ERROR()
{
cout<<"这个语句与该文法不符!"<<endl;
}

是这样的, scanf是一个函数(该函数已经定义了),而“scanf()”这就话就是如何使用该函数的。
到你知道什么是函数的时候你就懂了。

就像数学中y=f(x) 函数,例如:y=2*x 。
当你设置一个x的值后,你就可以通过该函数获取对应的y值。

  回答下列问题:(30分)
  (6分)对于下面程序段
  program test (input, output)
  var i, j: integer;
  procedure CAL(x, y: integer);
  begin
  y:=y*y; x:=x-y; y:=y-x
  end;
  begin
  i:=2; j:=3; CAL(i, j)
  writeln(j)
  end.
  若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。
  答: (1) 3 (2) 16 (3) 16 (每个值2分)

  (6分)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文法是否是LL(1)的,请说明理由。
  G(M):
  M → TB
  T → Ba |
  B → Db | eT |
  D → d |

  解答:
  计算文法的FIRST和FOLLOW集合:(4分)
  FIRST(M) = { a,b,e,d, } FIRST(T) = { a,b,e,d, }
  FIRST(B) = {b,e,d, } FIRST(D) = {d,}
  FOLLOW (M) = {#} FOLLOW (T) = { a,b,e,d,#}
  FOLLOW (B) = {a,# } FOLLOW (D) = { b}

  检查文法的所有产生式,我们可以得到:
  1. 该文法不含左递归,
  2. 该文法中每一个非终结符M,T,B,D的各个产生式的候选首符集两两不相交。
  3. 该文法的非终结符T、B和D,它们都有候选式,而且
  FIRST(T)∩FOLLOW(T)={ a,b,e,d }≠
  所以该文法不是LL(1)文法。(2分)

  (4分)考虑下面的属性文法
  产 生 式 语 义 规 则
  S→ABC

  A→a
  B→b
  C→c B.u := S.u
  A.u := B.v + C.v
  S.v := A.v
  A.v :=3*A.u
  B.v := B.u
  C.v := 1
  画出字符串abc的语法树;
  对于该语法树,假设S.u的初始值为5,属性计算完成后,S.v的值为多少。
  答:(1) (2分)

  (2) S.v的值为18 (2分)

  (4分)运行时的DISPLAY表的内容是什么?它的作用是什么?
  答:DISPLAY表是嵌套层次显示表。每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。通过DISPLAY表可以访问其外层过程的变量。

  (5分)对下列四元式序列生成目标代码:
  A:=B*C
  D:=E+A
  G:=B+C
  H:=G*D
  其中,H在基本块出口之后是活跃变量, R0和R1是可用寄存器。
  答: 目标代码序列
  LD R0 B
  MUL R0 C
  LD R1 E
  ADD R1 R0
  LD R0 B
  ADD R0 C
  MUL R0 R1
  ST R0 H

  (5分)写出表达式a+b*(c-d)对应的逆波兰式、三元式序列和抽象语法树。
  答:
  逆波兰式:(abcd-*+) (1分)
  三元式序列: (2分)
  OP ARG1 ARG2
  (1) - c d
  (2) * b (1)
  (3) + a (2)
  抽象语法树:(2分)

  (8分)构造一个DFA,它接受={a,b}上所有包含ab的字符串。
  答:
  (2分)构造相应的正规式:(a|b)*ab(a|b)*

  (3分)
  a a

  a b
  b b

  (3分)确定化:
  I
  {0,1,2} {1,2,3} {1,2}
  {1,2,3} {1,2,3} {1,2,4,5,6}
  {1,2} {1,2,3} {1,2}
  {1,2,4,5,6} {1,2,3,5,6} {1,2,5,6}
  {1,2,3,5,6} {1,2,3,5,6} {1,2,4,5,6}
  {1,2,5,6} {1,2,3,5,6} {1,2,5,6}
  b b
  b a
  a a a a

  a b b
  b

  最小化:
  {0,1,2} {3,4,5}
  {0, 2},1, {3,4,5}

  (6分)写一个文法使其语言为L(G)={anbncm| m,n≥1,n为奇数,m为偶数}。
  答:
  文法G(S):

  (8分)对于文法G(S):

  1. 写出句型b(Ma)b的最右推导并画出语法树。
  2. 写出上述句型的短语,直接短语和句柄。
  答:
  1. (4分)

  2. (4分)
  短语: Ma), (Ma), b(Ma)b
  直接短语: Ma)
  句柄: Ma)

  (12分)对文法G(S):
  S → a | ^ | (T)
  T → T,S | S
  (1) 构造各非终结符的FIRSTVT和LASTVT集合;
  (2) 构造算符优先表;
  (3) 是算符优先文法吗?
  (4) 构造优先函数。
  答:
  (1) (4分)

  (2) (4分)
  a ^ ( ) ,
  a > >
  ^ > >
  ( < < < = <
  ) > >
  , < < < > >

  (3) 是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。 (1分)

  (4) 优先函数(3分)
  a ^ ( ) ,
  F 4 4 2 4 4
  G 5 5 5 2 3

  (8分)设某语言的do-while语句的语法形式为
  S do S(1) While E
  其语义解释为:

  针对自下而上的语法分析器,按如下要求构造该语句的翻译模式,将该语句翻译成四元式:
  (1) 写出适合语法制导翻译的产生式;
  (2) 写出每个产生式对应的语义动作。
  答:(1). 适合语法制导翻译的文法(4分)
  G(S):
  R do
  UR S(1) While
  SU E
  (2). (4分)
  R do
  { R.QUAD:=NXQ }

  UR S(1) While
  { U.QUAD:=R.QUAD;
  BACKPATCH(S.CHAIN, NXQ) }

  SU E
  { BACKPATCH(E.TC, U.QUAD);
  S.CHAIN:=E.FC }

  答案二:
  (1) S do M1 S(1) While M2 E
  M ε (4分)
  (2) M ε { M.QUAD := NXQ } (4分)
  S do M1 S(1) While M2 E
  {
  BACKPATCH(S(1).CHAIN, M2.QUAD);
  BACKPATCH(E.TC, M1.QUAD);
  S.CHAIN:=E. FC
  }

  (10分)将语句
  while C>0 do if A B=0 then C:=C+D else C:=C*D
  翻译成四元式。
  答:
  100 (j>, C, 0, 102)
  101 (j, -, -, 112)
  102 (jnz, A, -, 106)
  103 (j, -, -, 104)
  104 (j=, B, 0, 106)
  105 (j, -, -, 109)
  106 (+, C, D, T1)
  107 (:=, T1, -, C)
  108 (j, -, -, 100)
  109 (*, C, D, T2)
  110 (:=, T2, -, C)
  111 (j, -, -, 100)
  112

  (10分)设有基本块如下:
  T1:=3
  T2:=A*B
  T3:=9+T1
  M:=A*B
  T4:=C-D
  L:=T3*T4
  T2:=C+D
  N:=T2
  画出DAG图;
  设L,M,N 是出基本块后的活跃变量,请给出优化后的四元式序列。
  答:

  1. (6分)
  L

  *
  T2,M T4 T2,N

  * - +

  T1 T3
  3 A B 12 C D

  2. (4分)
  M:=A*B
  S1:=C-D
  L:=12*S1
  N:=C+D

  (8分)文法G(S)及其LR分析表如下,请给出串baba#的分析过程。
  (1) S → DbB (2) D → d (3) D → ε
  (4) B → a (5) B → Bba (6) B → ε
  LR分析表
  ACTION GOTO
  b D a # S B D
  0 r3 s3 1 2
  1 acc
  2 s4
  3 r2
  4 r6 S5 r6 6
  5 r4 r4
  6 s7 r1
  7 S8
  8 r5 r5
  解答:
  步骤 状态 符号 输入串
  0 0 # baba#
  1 02 #D baba#
  2 024 #Db aba#
  3 0245 #Dba ba#
  4 0246 #DbB ba#
  5 02467 #DbBb a#
  6 024678 #DbBba #
  7 0246 #DbB #
  8 01 #S # acc
  哈哈,估计认识!!

第一个问题 答:(1)的值是:3 ; (2)的值是:16 ; (3)的值是:16
第二个问题 解答:计算文法FIRST和FOLLOW集合:
FIRST(M)={a,b,e,d, } FIRST(T)={a,b,e,d, }
FIRST(B)={b,e,d, } FISRT(D)={d, }
FOLLOW(M)={#} FOLLOW(T)={a,b,e,d,#}
FOLLOW(B)={a,#} FOLLOW(D)={b}
检查文法的所有产生式,可得:
1、 该文法不含左递归;
2、 该文法中每一个非终结符M,T,B,D的各个生产式的候选首符集两两不相交;
3、 该文法的非终结符T,B和D,它们都有候选式,而且
FIRST(T)∩FOLLOW(T)={a,b,e,d}≠Φ ;
综上所述,该文法不是LL(1)文法。
给你个网址,自己去看哈,记得给我分哦,呵呵
http://wenku.baidu.com/view/ce5fb54669eae009581bec50.html


英语翻译的问题!高手请进!
不知道第一题,LZ是否明白了 2。有"报道"(informed的意思是通知,所以在句中就是报道的意思咯!!)说是准确的,"平衡"(balanced)的和知情 这是第二题的答案。 嘿嘿。3。美联社提供了一种围绕其国内成员,国际用户和商业用户24小时的新闻源源不断。我没听懂你的问题,什么后面的三个对象? 是...

高手进!英语翻译问题,50分
1.使用MMG标记的固定曝光,应在PSY的25mm处使用.(属同谓语翻译,将同谓语作为先行词翻译)2.显示按钮的数目与DEVICE DATA中的步进图按钮数相同.(定语从句融合法翻译)没有上下文,也只能这样喽,专业名词要到专业字典去查~如`:英国`大`百科`全书`

英语翻译高手请进!!!希望能翻译得流利点,有道翻译我也会,还希望能自己...
在地域与距离隔离引起的显著遗传基因分化呈现了一种大规模的现象。分子变异分析(AMOVA)揭示了大部分种群间变异是发生在地域与地域之间而不是在某个地域的种群之间。逆行分析与曼纽尔测试,原理坐标分析以及簇群分析都一致证明了:随着地理距离的增加遗传隔离也随之增加。Genetic differentiation within the region...

汉译英的几个问题,高手请进,急,在线等!!!
1.Reference books are the books that can help you find the answers to these questions.2.Unwittingly,Gradually 3.The fact that the small size of insects can eat so little of the grain is not surprising.

请高手进来翻译,财务会计上的句子!
请高手进来翻译,财务会计上的句子! gearing 又称为 leverage: 杠杆原理 Leverage情况可按风险回报率分为正杠杆原理(Positive Leverage),自然杠杆原理(Neutral Leverage)和负杠杆原理(Negative Leverage)。当借来的钱,产生的利润高过债务时,就是正杠杆原理(Positive Leverage);当借来的钱,产生的利润...

英语高手进,翻译问题,谢谢。(坐等!!)
请把睡袋固定到墙上以防飘走。Please ( fix )the space sleeping bag ( to )the walls to (against )( flutters).航天飞机以光速行驶到火星需要多长时间?How long will ( it )( take ) to travel to Mars by space shuttle at the speed of light?我们每个人应该为保护环境作...

英语翻译!高手进啊
基本结构 为我们这个特别的爬行装置所选的基本结构如图一所示,每一条腿就是一个常见的可以滑动的曲柄,曲柄可以延伸到如图所示的位置。更多的关于腿的机械原理将在以后的章节中介绍。为了简化结构减少制动器的数量,六个腿被分成3个一组的两对,两个线形的滑动分别控制其运动。这样运动中会产生三角门,...

工商管理原理求高手英翻中
比如说,如果你将资金投入垃圾债券,而这部分市场的过去一年的表现非常糟糕,那么你就要增加投资,把垃圾债券的百分比恢复至你的目标。重新调整投资组合可以控制风险水平,其原理就是确保你不会将过多资金放在任何一个领域。还有一个潜在的好处就是,它迫使你买进反弹时机已经成熟的表现低迷的证券,同时削减...

英语高手进:翻译问题补充的内容。要求标准,准确。通过了加分。_百度...
With the improvement of people's living standard , China, as a country of the largest population in the world, has an increasing demand for automobile consumption year by year. However, the wide use of automobiles definitely brings a higher pressure to resources and energy, as well...

英语翻译高手请进!
以及对课程结构的理由,因为它们与这些目标。学生参加了简短的主要社区;最终,他们必须脱离离开。在这一过程的重要一步脱离接触是一些关键的距离测量成就。第二部分的主要的,因此要准备一个学生得到充分的社会问题的论述有信心到复杂的重大问题和比较,并与其他社区的建议,其建议提出的目的。

屯溪区13851576290: 编译原理的疑问 -
欧阳妹三七: 设文法G的开始符号为S,abc是G的一个句型.如果有句型S *=>aAc,且A +=>b,则称b是句型abc相对于非终结符A的短语.假如A =>b,则称b是句型abc相对于规则A=>b的直接短语.句柄就是句型的最左直接短语.假如一个短语,有且只含有一个非终结符,则称之为素短语;(语法树)最左边的素短语为最左素短语.形式语言里,规范推导是最右开始,则归约是最左开始.短语的特点是由非终结符而来.在算符优先分析里,短语是进行归约的方向.它和常见的中文、英文里所说的短语概念有相似,也有不同.

屯溪区13851576290: 请教高人,帮忙解答几道编译原理的题目!急!!!有赏啊! -
欧阳妹三七: 1. L(A)|L(A)=L(A) => A|A=A2. A=b|aA => L(A)= {b或任意个a开头,以b结束的字符串} => A=a*b 同理:A=a*b => A=b|aA所以:A=b|aA当且仅当A=a*b 3. ....有点麻烦

屯溪区13851576290: C语言编译原理 -
欧阳妹三七: C语言编译过程详解 C语言的编译链接过程是要把我们编写的一个C程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件...

屯溪区13851576290: 编译原理问题设文法G具有如下产生式:S—>{EtSS'|aS'—>eS|tE—>b要求:(1)请指出文法G的终结符合、非终结符号和开始符号.(2)分别输出文法G... -
欧阳妹三七:[答案] (1) 开始符号:S 非终结符号:S,E,S' 终结符号:{,t,a,e,b (2) First(S)={{,a} First(S')={e,t} First(E)={b} Follow(S)={$,e,t} Follow(S')={$,e,t} Follow(E)={t}

屯溪区13851576290: 编译原理问题
欧阳妹三七: 第一个问题:编译时是否有影响无关紧要只是你的源文件变大了,但是执行起来是没有影响的. 第二个:采用静态全局变量是为了在连接多个文件时防止重名问题出现,因为程序员在编程时不会一个人完成一个较大程序,必需要分工,每个人都用自己的文件来写程序,这样在多个文件中可能会把名字起重了,比如在本文件中用static 类型 a定义后,a就只能是B文件的全局变量,这时A文件也可以用static 类型 a来定义,但是它仅限于A文件,当然如果你不把A文件和B文件合在一起就没啥意义了,可以说如果B文件的执行结束了,这个静态全局变量就被释放了. 第三个:只要应用程序结束,变量就释放了 第四个:开辟的空间放在内存中,也就是ram(随机存取存储器),你理解的对

屯溪区13851576290: 编译原理简单问题 -
欧阳妹三七: 1 E , T , T*F , T*(E) , T*(E-T) , T*(E-F) , T*(E-i) , T*(T-i) , T*(F-i) , T*(i-i) , F*(i-i) , i*(i-i) 2 略3 i+i/i i/i i/i 4 四则运算

屯溪区13851576290: 一个编译原理的问题 -
欧阳妹三七: First(α) 是符号串α的开始符号集合.也就是说,用推导的方法对α进行推导,一次次地使用产生式,用产生式右部的符号串替换一个非终结符,所有那些可能出现在第一个符号位置的终结符,就构成了开始符号集.比如,在C语言中,对于符号串...

屯溪区13851576290: 编译原理 语法分析问题,30分全给了!救人对下面文法G:S - >SaA|bBA - >aB|cB - >Bb|d1.消除该方法的左递归.2.计算消除左递归后的方法的每个非终结符的... -
欧阳妹三七:[答案] 1.S->bBS'S'->aAS'|εA->aB|cB->dB'B'->bB'|ε 2.First(S)={b}First(S')={a,ε}First(A)={a,c}First(B)={d}First(B')={b,ε} Follow(S)={#}Follow(S')={a,#}Follow(A)={a}Follow(B)={a}Follow(B')={a} 3.不是LL(1)文...

屯溪区13851576290: 程序的编译原理!详细解说!一下!!
欧阳妹三七: 编译原理```分4步骤; 1.把编写的源代码中如#include的头文件包含到程序中来; // 扩展名.c 2.把编译后的源代码转为汇编语言的代码;// 扩展名.i 3.把汇编语言转为010101那了啦,就是机器语言;//扩展名 .o 4.最后就是生成EXE可执行文件啦.注意的是,这时候才会把<stdio.h>中的printf scanf包含进来,一起送到 显示器上输出结果.....我会的就这么多了,希望能帮到你```

屯溪区13851576290: 编译原理问题:求解 -
欧阳妹三七: E是文法开头.ε代表终结符号(推理中代表终点或结果,程序语言中代表常量等).E T 这些大写字母一般代表非终结符号(这些代表中间过程,非结果.程序中代表函数等等).开始是E.因为有个G(E).E就是文法开始符号.推导就有E开始...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网