IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)

IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)
IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)

目录

1 系统描述(问题域描述) (2)

2 文法及属性文法的描述 (2)

2.1文法 (2)

2.2 属性文法 (2)

3 语法分析方法描述及语法分析表设计 (3)

3.1语法分析方法描述 (3)

3.1.1 LR方法的基本思想 (3)

3.1.2 LR分析器模型 (4)

3.2语法分析表设计 (5)

4中间代码形式的描述及中间代码序列的结构设计 (6)

4.1中间代码形式的描述 (6)

4.2中间代码序列的结构设计 (6)

5 编译系统的概要设计 (6)

6 详细的算法描述 (7)

6.1系统流程图 (7)

6.2算法描述 (7)

7 软件的测试方法和测试结果 (18)

7.1软件的测试方法 (18)

7.2测试结果 (18)

8设计的特点、不足、收获与体会 (21)

8.1特点与不足 (21)

8.2收获与体会 (21)

9 参考文献 (21)

10本科生课程设计成绩评定表 (22)

IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)

1 系统描述(问题域描述)

对条件语句: if 〈布尔表达式〉then〈赋值语句〉 else 〈赋值语句〉,进行词法,LR(1)语法分析,并根据语法制导翻译方法将条件语句翻译成四元式中间代码形式,最后输出翻译后的四元式代码。

2 文法及属性文法的描述

2.1文法

G[S]: S->CS

S->TS

S->A

C->if E then

T->CS else

T->else

其中,E代表布尔表达式,可由界符()括起来,A代表赋值表达式。在这里E、A都代表终结符,具体的表达式在程序会判断其类型。

2.2 属性文法

S->C S

{S.clain:=merge(C.clain,S.clain)}

S->T S

{S.clain:=merge(T.clain,S.clain)}

S->A

{S.clain:0/* 空链*/}

C->if E then

{backpatch(E.true,nextstat) C.clain:=E.false}

T->C S else

{ q:=nextstat

Emit(‘GOTO’—)

Backpatch(C.clain,nextstat)

T.clain:=merge(S.clain,q)}

3 语法分析方法描述及语法分析表设计

3.1语法分析方法描述

3.1.1 LR方法的基本思想

一个LR分析器实质上是一个带先进后出存储器的确定有限状态自动机。我们将把“历史”和“展望”材料综合地抽象成某些“状态”。分析栈用来存放状态。栈里的每个状态概括了从分析开始直到某一归约阶段的全部“历史”和“展望”资料。任何时候,栈顶的状态都代表了整个的历史和已推测出的展望。因此,在任何时候都可从栈顶状态得知所想了解的一切,而绝对没有必要从称底而上翻阅整个栈。LR分析器的每一步工作都是由栈顶

状态和现行输入符号所唯一决定的。为了有助于明确归约手续,我们把已归约出的文法符号串也同时放在栈里。于是,我们可以把栈的结构看成是:

栈的每一项内容包括状态S和文法符号X两部分。(S0,#)为分析开始前预先放到栈里的初始状态和句子括号。栈顶状态为SM,符号串X1X2….XM是至今已移进归约出的部分。

3.1.2 LR分析器模型

LR分析器模型如下图:

LR分析器的核心部分是一张分析表。这张分析表包括两部分,一是“动作”(ACTION)表,另一个是“状态转换表”(GOTO)表。它们都是二维数组。ACTION[s,a]规定了当状态s面临输入符号a时应采取什么动作。GOTO[s,a]规定了状态s 面对文法符号X(终结符或非终结符)时下一个状态是什么。显然GOTO[S,x]定义了一个以文法符号为字母表的DFA。

每一项ACTION[s,a]所规定的动作不外是下述四种可能之一:

1. 移进把(S,A)的下一状态S=GOTO[S,A]和输入符号A推进栈,下一输入符号变成现行输入状态。

2. 规约指用某一产生式A-> 进行规约。假若的长度为r,归约动作是A,去除栈顶的r个项,使状态Sm-r变成栈顶状态,然后把(Sm-r,A)的下一状态S1=GOTO[Sm-r,A]和文法符号A推进栈。归约动作不改变现行输入符号。执行归约动作意味着(=Xm-r+1….Xm)已呈现于栈顶而且是一个相对于A的句柄。

3. 接受宣布分析成功,停止分析器的工作。

4. 报错发现源程序含有错误,调用出错处理程序。

LR分析器的总控程序本身的工作是非常简单。它的任何一步只需要按栈顶状态和现行输入符号a执行ACTION[S,a]所规定的动作。不管什么分析表,总控程序都是一样地工作。

一个LR分析器的工作过程可看成是栈里的状态序列,已归约串和输入串所构成的三元式的变化过程。分析地的初始三元式(S0,#,a1a2…an#)其中,S0为分析器的初态;#为句子的左括号;a1a2…an为输入串;其后的#为结束符。分析

过程每步的结果可表示为(s0s1…sm,# X1X2…,ai….an#)分析器的下一步动作是由栈顶状态Sm和现行输入符号ai所唯一决定。即,执行ACTION[Sm,ai]所规定的动作。经执行每种可能的动作之后,三元式的变化的情形是:

(1)若ACTION[Sm,ai]为移进,且S=GOTO[Sm,ai],则三元式变成:

(S0S1…Sm,#X1X2…Xmaian#)

(2)若ACTION[Sm,ai]={A-> },则按产生式A-> 进行归约。此时三元式变为

(S0S1…Sm-rS,#X1…Xm-rA,aiai+1…an#)

此处S =GOTO[Sm-r,A],r为的长度,=Xm-r+1…Xm。

(3)若ACTION[Sm,ai]为:接受,则三元式不再变化,变化过程终止,宣布分析成功。

(4)若ACTION[Sm,ai]为“报错”,则三元式的变化过程终止,报告错误。一个LR分析器的工作过程就是一步一步地变换三元式,直至执行“接受”或“报错”为止。

3.2语法分析表设计

(1)Sj 把下一状态j和现行输入符号移进栈;

(2)rj 按第j个产生式进行规约;

(3)acc 接受;

(4)空白格出错标志,报错;

4中间代码形式的描述及中间代码序列的结构设计4.1中间代码形式的描述

四元式是一种比较普遍采用的中间代码形式。四元式的四个组成部分是:操作符OP,第一个和第二个运算对象ARG1和ARG2及运算结果RESULT。运算对象和运算结果有时指用户自己定义的变量,有时指编译程序引进的临时变量。例如a:=b*c+b*d的四元式表示如下:

(1)(*,b,c,t1)

(2)(*,b,d,t2)

(3)(+,t1,t2,t3)

(4)(:=,t3,-,a)

4.2中间代码序列的结构设计

If E then A1else A2

100 (关于E的布尔表达式)

101 (goto, - , - ,104)

102 (关于A1的赋值表达式)

103 (goto, - , - ,105)

104 (关于A2的赋值表达式)

105 exit

5 编译系统的概要设计

本课程设计需要写一个条件语句的LR文法及其属性文法,运用LR分析方法对此文法进行语法和语义分析,中间代码采用四元式输出。在这个条件语句的翻译分析程序设计中,主要通过以下四个过程来完成:

1.词法分析。由于编译程序是在单词的级别上来分析和翻译源程序的,那么在这里,词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个一个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。所以词法分析是编译的基础。在此程序中是将词法分析作为一遍处理的,通过一次分析把全部的字符串都分析完成,并将其保存在数组中便于下一步进行语法分析。

2.语法分析。在完成词法分析的基础上对条件语句进行语法分析,在这里我采用了自下而上分析法SLR(1)分析方法,来分析判定程序的语法结构是否符合语法规则,在分析前首先要构造SLR(1)分析表,然后在进行语法分析,在此程序中,以‘;’为结束符号来判断一条条的条件语句,并且独立的对每条语句进行语法分析。并把算法中的移近、规约操作

3.语义分析、输出四元式。在进行语法分析的同时进行语义分析,在此次设计中式将二者结合起来作为一遍进行处理的。在进行语义时同时生成中间语言四元

式。

4.出错处理。如果在词法分析时遇到非法字符就会输出出错信息,同时输出从出错点开始往后的一串字符,但是它仍然能跳过该非法字符继续分析;如果在语法分析中有错误的话,就会显示在DOS环境下输出“ERROR”,但是它能跳过出错的地方继续往后执行,分析出一部分结果并保存在文件中。

6 详细的算法描述

6.1系统流程图

6.2算法描述

本程序中,选用C++程序设计语言的部分常用的单词作为词法分析的对象,词法分析后,将识别的所有单词符号以及相关信息保存在数组中,以便后面语法分析和语意分析及中间代码生成使用,同时将识别出的单词符号输出到文件中,

并分类别地存储到相应的数组中一便进行查看。

采用SLR(1)分析法,生成状态表,然后根据栈的移近、移出生成分析过程表。

在经过语法、语义分析之后,生成中间代码四元式,同时进行出错管理。

void initGrammar();//初始化产生式表

bool isJchar(char c)//检测是否为分界符

int word() //进行词法分析,并存到fenxi.txt文件中

wnode* lexcial(wnode *head)//把词法分析得来的词分类别放到表达式数组int check(int s,char v);//查LR分析表

void gammarAnalysis(wnode *head);//语法分析及进行相应的语义操作并产生四元式

void showS(int opS[],int tops,char opC[],int topc,wnode *hp);//显示分析栈的内

源程序代码:

# include

#include

#include

# include

#include

#include

using namespace std;

char Filename[100];

struct wnode

{

char id;

int n;//编号

char text[20];

wnode * next;

};

struct Gnode//存储产生式

{

string gen;

int id;

};

Gnode grammar[6];

void initGrammar();//初始化产生式表

wnode* lexcial(wnode *head);

int check(int s,char v);//查LR分析表

void gammarAnalysis(wnode *head);//语法分析及进行相应的语义操作并产生四元式

void showS(int opS[],int tops,char opC[],int topc,wnode *hp);//显示分析栈的内容

//用于if-else分析

int LR[11][9]={

//________ACTION_________|___GOTO___

// i t e A E # S C T

{105, 0, 0,104, 0, 0,101,102,103},//0

{ 0, 0, 0, 0, 0, -1, 0, 0, 0},//1

{105, 0, 0,104, 0, 0,106,102,103},//2

{105, 0, 0,104, 0, 0,110,102,103},//3

{ 0, 0, 3, 0, 0, 3, 0, 0, 0},//4

{ 0, 0, 0, 0,108, 0, 0, 0, 0},//5

{ 0, 0,107, 0, 0, 1, 0, 0, 0},//6

{ 5, 0, 0, 5, 0, 0, 0, 0, 0},//7

{ 0,109, 0, 0, 0, 0, 0, 0, 0},//8

{ 4, 0, 0, 4, 0, 0, 0, 0, 0},//9

{ 0, 0, 2, 0, 0, 2, 0, 0, 0} //10

};

void initGrammar()

{

grammar[0].gen="S'->S";

grammar[0].id=0;

grammar[1].gen="S->CS";

grammar[1].id=1;

grammar[2].gen="S->TS";

grammar[2].id=2;

grammar[3].gen="S->A";

grammar[3].id=3;

grammar[4].gen="C->if E then";

grammar[4].id=4;

grammar[5].gen="T->CS else";

grammar[5].id=5;

cout<<"所用文法:"<

int i,j;

for(i=1;i<6;i++)

cout<

cout<<"5"<<'\t'<<"T->else"<

cout<<"注:i--if t--then e--else"<

cout<<" E——布尔表达式(在语法分析中看成是终结符)"<

cout<<" A——赋值语句(在语法分析中看成是终结符)"<

cout<<"SLR(1)分析表:"<

cout<

cout<

<

for(i=0;i<11;i++)

{

cout<

for(j=0;j<9;j++)

{

if(LR[i][j]>=110)

cout<

else if(LR[i][j]>100)

cout<

else if(LR[i][j]>0)

cout<

else if(LR[i][j]==0)

cout<

else

cout<

}

cout<

}

}

bool isJchar(char c)//检测是否为分界符

{

bool r=false;

switch(c)

{

case' ':

case'\n':

case';':r=true;break;

default:;

}

return r;

}

int word()

{

char ch=' ';

int num=0;

ifstream source("source.txt");

ofstream fenxi("fenxi.txt");

char yunsuanfu[11]={'+','-','*','/','<','>','=','!','%','&','|'};

char jiefu[9]={',',';','(',')','{','}','[',']','#'};

char

*guanjianzi[20]={"int","if","else","then","do","while","break","continue","switch","ret urn","when","for","double","main","break","include","short","long","float","char",};

char *biaoshifu[100]={"\0"};

/////////////////////////////////

while(!source.eof())

{

source.get(ch);

char shuzi[20]="";

int i=1;

if(ch>='0'&&ch<='9') //判断数字

{

shuzi[0]=ch;

source.get(ch);

while(((ch>='0'&&ch<='9')||ch=='.')&&!source.eof())

{

cout<

shuzi[i++]=ch;

source.get(ch);

}

fenxi<

}

for(i=0;i<=10;i++) //运算符判断

{

if(ch==yunsuanfu[i])

{

fenxi<

}

}

for(i=0;i<9;i++) //界符

{

if(ch==jiefu[i])

{

fenxi<

}

}

if(ch>='a'&&ch<='z') //关键字判断

{

char str1[20];

int sign=0;

int n=0;

while(((ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')||ch=='_')&&!source.eof())

{

str1[n]=ch;

source.get(ch);

n++;

}

str1[n]='\0';

for(i=0;i<20;i++)

{

if(!strcmp(str1,guanjianzi[i]))

{

fenxi<

sign=1;

}

}

if(sign==0)

{

fenxi<

}

for(i=0;i<=10;i++) //运算符判断

{

if(ch==yunsuanfu[i])

{

fenxi<

}

}

for(i=0;i<9;i++) //界符

{

if(ch==jiefu[i])

{

fenxi<

}

}

}

}

fenxi.close();

source.close();

return 0;

}

wnode* lexcial(wnode *head)

{

string str;

int loc=-1;

char c;

int i,k=0,mark=0;

int Acount=0,Ecount=0;

wnode *p,*q;

p=head;

q=new wnode;

q->text[0]='\0';

q->n=0;

q->next=NULL;

fstream infile(Filename);//根据输入的路径名来打开这个文件while (infile.get(c))

{

if(isJchar(c))

{

if(mark==1)

{

q->text[k]='\0';

for(i=0;q->text[i]!='\0';i++)

if(q->text[i]=='=')

loc=i;

if(p->id=='i')

{q->id='E';q->n=++Ecount;}

else if(loc!=-1)

{q->id='A';q->n=++Acount;}

else

{

q->id=q->text[0];

if(q->id=='i')

head->n++;

}

p->next=q;

p=q;

mark=0;

}

}else

{

if(mark==0)

{

q=new wnode;

q->n=0;

q->next=NULL;

loc=-1;

k=0;

mark=1;

}

q->text[k++]=c;

}

}

//在末尾加上一个'#'

q=new wnode;

q->next=NULL;

q->id='#';

q->text[0]='\0';

q->n=0;

p->next=q;

return head;

}

//语法分析

void gammarAnalysis(wnode *head)

{

char E[20];

char A[20];

char r,d1,d2;

int tn=0,en=head->n;

ofstream table;

table.open("siyuanshi.txt");

if(!table)

{

cout<<"Cannot open output file!"<

exit(1);

}

cout<<"语法分析过程:"<

cout<<"分析栈输入串操作"<

int opS[20];//记录状态,状态栈

char opC[20];//记录符号,符号栈

int mark=-1,i,count=0;

int loc=99;//指示程序指令地址

char c;

wnode *p;

p=head->next;

int tops=0;

int topc=0;

opS[tops]=0;

opC[topc]='#';

while(p)

{

showS(opS,tops,opC,topc,p);

if(tops

c=opC[tops+1];

else

{

c=p->id;

if(c=='E')

{

for(i=0;i<20&&p->text[i]!='\0';i++)

E[i]=p->text[i];

E[i]='\0';

}

if(c=='A')

{

for(i=0;i<20&&p->text[i]!='\0';i++)

A[i]=p->text[i];

A[i++]=';';

A[i]='\0';

}

}

mark=check(opS[tops],c);

switch(mark)

{

case -1:cout<<'\t'<<"语法分析,翻译成功

~~~"<

case 1:tops=tops-2;topc=topc-1;opC[topc]='S';

cout<<'\t'<<'\t'<<" 归约 "<

case 2:tops=tops-2;topc=topc-1;opC[topc]='S';

cout<<'\t'<<'\t'<<" 归约 "<

case 3:tops=tops-1;topc=topc-0;opC[topc]='S';

cout<<'\t'<<'\t'<<" 归约 "<

r=A[3];d1=A[2];d2=A[4];

table<<++loc<<"\t("<

table<<++loc<<"\t("<<'='<<'\t'<<'T'<

break;

case 4:tops=tops-3;topc=topc-2;opC[topc]='C';cout<<'\t'<<'\t'<<" 归约

"<

r=E[2];d1=E[1];if(r=='=')d2=E[4];else d2=E[3];

table<<++loc<<"\t("<

if(r=='=')table<

else table<<'\t'<

if(en==1)

table<<++loc<<"\t("<<"goto"<<'\t'<<'\t'<<'\t'<

else

table<<++loc<<"\t("<<"goto"<<'\t'<<'\t'<<'\t'<

break;

case 5:tops=tops-3;topc=topc-2;opC[topc]='T';cout<<'\t'<<'\t'<<" 归约

"<

table<<++loc<<"\t("<<"goto"<<'\t'<<'\t'<<'\t'<

break;

case 101:

case 102:

case 103:

case 104:

case 105:

case 106:

case 107:

case 108:

case 109:

case

110:if(tops==topc)p=p->next;opS[++tops]=mark-100;if(tops>topc)opC[++topc]=c;

cout<<'\t'<<'\t'<<" 移入"<

case 0:cout<<"ERROR!"<

}

}

}

void showS(int opS[],int tops,char opC[],int topc,wnode *hp)

{

// cout<

int i=0,j=0;

wnode *tp=hp;

for(i=0;i<=topc;i++)

cout<

cout<<'\t';

while(tp)

{

cout<id;

tp=tp->next;

}

cout<

for(i=0;i<=tops;i++)

cout<

//cout<

}

int check(int s,char v)

{

int t=-1;

switch(v)

{

case'i':t=0;break;

case't':t=1;break;

case'e':t=2;break;

case'A':t=3;break;

case'E':t=4;break;

case'#':t=5;break;

case'S':t=6;break;

case'C':t=7;break;

case'T':t=8;break;

default:;

}

int r=LR[s][t];

return r;

}

int main()

{

FILE *fp;

int n=100;

cout<<"\n***IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)***"<

cout<<"请输入文件名:";

cin.getline(Filename,n);

fp=fopen(Filename,"r");

while (fp==NULL)//若打入的文件没有,则提示继续打入有效的路径名

{

cout<<"Sorry,文件不存在!"<

cout<<"请重新输入文件名:";

cin.getline(Filename,n);

fp=fopen(Filename,"r");

}

wnode *wlist;

wlist=new wnode;

wlist->id='#';

wlist->n=0;

wlist->text[0]='\0';

wlist->next=NULL;

wlist=lexcial(wlist);

fclose(fp);

word();

gammarAnalysis(wlist);

ifstream fin("siyuanshi.txt");

string s;

cout<<"输出四元式为:"<

while( getline(fin,s) )

{

cout<< s << endl;

}

return 0;

}

7 软件的测试方法和测试结果

7.1软件的测试方法

程序刚写完时,有几个错误,根据系统的提示,合理设置断点进行调试7.2测试结果

运行程序出现DOS界面,显示所用语法与SLR(1)分析表

输入保存已写好的程序的文件名source.txt,回车键,词法分析生成单词表,语法分析生成语法分析过程和中间代码四元式

条件语句代码:

词法分析单词表:

各种文言文最常用的翻译方法整理

最常用的翻译方法——古文今译六字法:对译法、增删法、移位法、保留法、替换法、意译法,简括为“对、增、移、留、换、意”六字。 对译法:就是用现代汉语中对等的词去对换被译的文言词。如“野芳发而幽香”,可译为“野花开散发出清幽的香味”。 增删法:就是将文言文中的单音节变成双音节词。如“齐师伐我”,可译为“齐国的军队攻打我们”,对少数没有相当的词表示的文言虚词可以不译或删去。“夫环而攻之”中的“夫”在译文时可以删去。 移位法:对一些与现代汉语句式结构不相同的文言句子,在译文时应换成现代汉语的语序加以调整。如“何陋之有”,是“有何陋”;又如“战于长勺”,应按照“于长勺战”的语序来翻译。 保留法:凡是古今意思相同的词(国号、帝号、年号、人名、地名、官名、度量衡单位等)可照录,不必另作翻译。如“庆历四年春,滕子京谪守巴陵郡”中的“庆历四年春”“滕子京”“巴陵”可照录不译。 替换法:对少数文言词语所表示的意义,在译文时可用现代汉语中意义相当的词去替换。如“吾欲之南海”中的“吾”替换为“我”,“之”替换为“去”,全句应译为“我想要去南海”。 意译法:对少数文词不能紧扣原文逐字逐句翻译的,要能在理解句子大概意义的前提下,找出相近的含义加以表示。如“鸢飞戾天者,望峰叹心”,直译为“鸢飞到天上,看到山峰,就会平息那心”,意译为“那些追逐名利想要飞黄腾达的人,远远望见这些雄奇的山峰,就平息那些热衷于功名利禄的心。”两相比较联系上下文意义,显然意译要比直译更准确。又如“不以物喜,不以己悲”,倘直译则为“不因为外物的变化而高兴,不因为自己的得失而悲伤”显然不符合语境,此处作者采用的是互文,因此要译为“不因外物的好坏和自己的得失或喜或悲”。 二、正确解释文言实词的技巧 1、由字形、字音推求字义 由象形、会意、指示三种造字法造出的汉字,其字义均和字形有关,这些字占了汉字的绝大部分,分析其字形结构,能帮助我们准确的理解词义。 如“日”构成的汉字多于光和时间有关,据此可以推知《岳阳楼记》中“春和景明”、“日星隐曜”中的“景”和“曜”分别为“日光”和“光芒”。 由于古汉语中存有大量的同音假借现象,我们在解释词义时就不能字字拘泥于本字本义的分析。当“疑于义者,以声求之”,这就是说一个字在具体的语言环境中,用本义和引申义都解释不通,不妨从字音方面去考虑。 如《三峡》“两岸连山,略无阙处”,其中的“阙”若用本义解释为“宫阙”在此显然不通,从字音考虑与“缺”通假,意思就准确了。 2、利用句子结构推断词义 句式的整齐、语意的对应是汉语一大特点,文言文中表现尤为突出,根据这一特点可以推知词义,进而准确地理解原文。 如《捕蛇者说》“殚其地之出,竭其庐之入”中“竭”的含义是“使……竭”,即“尽”的意思,那么与其对应的“殚”的含义也可为“使……殚”,即“尽”的意思。 3、利用词的构成推断词义 在文言文里,结构相同的词语或者作同一句子成分的词,往往在意义上具有相同、相近或相反的特点,利用这一特点,可以正确解释词语。 如:“优柔寡断”,“优”对“寡”,“柔”对“断”,后面的“寡断”是“少果断”,那么前面的“优柔”就应该是“多柔和”。

文言文句子的翻译

《文言文句子的翻译》 【教学目的】 1、落实《考试说明》“阅读浅显文言文能力”的训练,集中训练文言句子翻译的能力。 2、在学生已掌握文言文翻译的一般原则、技巧的基础上,加强踩点得分意识,以难词难句为突破口,指导学生掌握好高考文言句子翻译的方法技巧。 【教学重难点】 1、抓关键词句(关键词语、特殊句式),洞悉得分点。 2、掌握解题步骤、翻译方法,学以致用。 3、借助积累(课内文言知识、成语、语法结构、语境等),巧解难词难句。 【教学设计】 1、本课以学法指导和能力训练为重点,帮助学生归纳系统的文言句子的翻译方法(直译),并指导其应用。 2、在学生掌握了“信、达、雅”三字翻译目标和“翻译六字诀”的基础上,针对学生在文言翻译中的盲点,力图引导学生总结归纳出解决翻译疑难的技巧,并通过训练验证这些技巧的可操作性,使学生能举一反三,从而增强文言文翻译的信心。 3、本设计重在让学生易于掌握,便于利用,注重实用性和可操作性。 【教学步骤】 一.课堂导入 1、提问:从高考的特点与考查目的出发,文言文翻译要严格遵循的两个原则是什么? 第一: 忠于原文,力求做到_____、_____、_____ 。(信达雅) 第二: 字字落实,以_____为主,以_____为辅(直译意译) (①让学生用自己语言表述文言文翻译“信、达、雅”三字原则的理解 ②直译:指译文要与原文保持对应关系,重要的词语要相应的落实,要尽力保持原文遣词造句的特点和相近的表达方式,力求语言风格也和原文一致。意译:指着眼于表达原句的意思,在忠于愿意的前提下,灵活翻译原文的词语,灵活处理原文的句子结构。) 2、提问: 文言文翻译的“六字决”? ①对:一般指把原名中的文言单音词对译为现代汉语的双音或多音词。 ②换:有些词语意义已经发展,用法已经变化,语法已经不用,在译文中,应换这些古语为今语。 ③留:人名、地名、年号、国号、庙号、谥号、书名、物名都保留不译;与现代汉语表达一致的词语可保留。 ④删:一些没有实在意义的虚词,如表敬副词、发语词、部分结构助词等,同义复用的实词或虚词中的一个和偏义复词中陪衬的词应删去。 ⑤补:省略的部分;词语活用相应的部分;代词所指的内容;使上下文衔接连贯的内容等。

FOR循环语句的翻译程序设计

目录 1 系统描述 (2) 1.1目的 (2) 1.2设计内容: (2) 1.3翻译过程 (2) 1.4初始条件: (3) 1.5 开发平台 (3) 2文法及属性文法的描述 (3) 3 语法分析表设计 (4) 3.1 LR分析概述 (4) 3.2 LR(0)分析表 (5) 3.3 LR语法分析过程的设计思想及算法 (7) 3.4 翻译方法 (8) 4 中间代码形式的描述及中间代码序列的结构设计 (8) 5简要的分析与概要设计 (9) 6详细的算法描述 (9) 6.1 main函数 (10) 6.2词法分析 (10) 6.3 语法分析 (12) 7 测试方法和测试结果 (13) 7.1测试过程 (13) 7.2 测试结论 (14) 8 研制报告 (14) 8.1研制过程 (14) 8.2本设计的评价 (15) 8.3个人心得体会 (15) 9 参考文献 (16) 本科生课程设计成绩评定表 (17)

FOR循环语句的翻译程序设计 ——LR方法、输出四元式 1 系统描述 1.1目的 通过设计、编制、调试一个FOR循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,实现词法分析程序对单词序列的词法检查和分析,并且实现对单词序列的语法分析、语义分析以及中间代码生成。 1.2设计内容: 本设计按照要求设计出for语句的简单文法,并使用LR分析法对用户输入的程序进行分析和翻译。 对下列正确的程序输入: for(i=0;i<10;i++) { m=m+i; } 结果程序要对该输入进行词法分析,然后利用LR分析法对词法分析后得到的单词序列进行语法分析,经过语法制导翻译显示出等价的四元式表示的中间代码。 对于错误的程序输入,如: for(i=0;i<10) { m=m+i; } 结果程序要指出程序出错。 1.3翻译过程

IF-ELSE条件语句的翻译程序设计(LL(1)法、输出三地址表示) 2

IF-ELSE条件语句的翻译程序设计 1 问题描述 要求用LL(1)自顶向下分析方法及三地址中间代码,对IF-THEN-ELSE条件语句完成编译各阶段过程,包括词法、语法、语义等分析。 2 问题分析及编译系统的概要设计 编译过程一般分为六个阶段的过程,可以由六个模块完成,它们称为词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序,此外,一个完整编译程序还必须包括“表格管理程序”和“出错处理程序”。 这次实验涉及到词法分析、语法分析、语义分析及表格管理和出错管理。其中,词法分析至少要能识别关键字“if”、“then”和“else”,标识符(即自定义变量),数字,和运算符等等;语法分析要分析程序结构的合法性,即是否为文法的句子;语义分析要能够语法制导翻译出中间代码(三地址)并将其输出;表格管理是指符号表;出错处理是指在语法分析时,所有非文法句子的错误类型处理. 3 文法及属性文法的定义 3.1 文法: 文法是用于描述语言的语法结构的形式规则(即语法规则)。这些规则必须是准确的、易于理解的以及有相当强的描述能力。由这种规则所产生的程序语言应有利于句子分析和翻译,而且,最好能通过这些规则自动产生有效的语法分析程序. IF-ELSE条件语句的文法如下所示: 0.A->EB 1.B->+EB|-EB|ε 2.E->FT 3.T->*FT|/FT|ε 4.F->i|(E) 或者能够更简洁一点: 0.S->if A THEN B ELSE C 1.A->m rop n

3.C->x=n arop m 4.rop->=|<|> 5.arop->+|-|*|/ 3.2 属性文法: 属性文法是在上下文无关文法的基础上,为每个文法符号(终结符或者非终结符)配备若干相关的“值”(与文法符号相关的属性)。 在一个属性文法中,对应于每个产生式A→a都有一套与之相关联的语义规则,每规 则的形式为:b:=f(c 1,c 2 ,…,c k )其中f是一个函数,而且或者①b是A的一个综合属性 并且c 1,c 2 ,…,c k 是产生式右边文法符号的属性或者②非终结符既可有综合属性也可有 继属性,文法开始符号的所有继承属性作为属性计算前的初始值。 属性文法为: if(VT[opr]=='=') //{"="判断}; { arr[d][1]=arr_i[opd]; arr[d][0]='='; arr[d][2]=id; arr[d][3]=' '; arr[d][4]=' '; id++; } else if(VT[opr]=='>') //{">"判断}; { arr[d][1]=arr_i[opd]; arr[d][0]='>'; arr[d][2]=id; arr[d][3]=' '; arr[d][4]=' '; id++; }

文言文翻译方法及解题技巧

文言文翻译方法及解题技巧 文言文翻译方法 一、基本方法:直译和意译 文言文翻译的基本方法有直译和意译两种。 所谓直译,是指用现代汉语的词对原文进行逐字逐句地对应翻译,做到实词、虚词尽可能文意相对。直译的好处是字字落实;其不足之处是有时译句文意难懂,语言也不够通顺。 所谓意译,则是根据语句的意思进行翻译,做到尽量符合原文意思,语句尽可能照顾原文词义。意译有一定的灵活性,文字可增可减,词语的位置可以变化,句式也可以变化。意译的好处是文意连贯,译文符合现代语言的表达习惯,比较通顺、流畅、好懂。其不足之处是有时原文不能字字落实。 这两种翻译方法当以直译为主,意译为辅。 二、具体方法:留、删、补、换、调、变。 “留”:就是保留。凡是古今意义相同的词,以及古代的人名、地名、物名、官名、国号、年号、度量衡单位等,翻译时可保留不变。例如:《晏子使楚》中的“楚王”、“晏婴”、“晏子”等不用翻译。 “删”,就是删除。删掉无须译出的文言虚词。例如:“寡人反取病焉”的“焉”是语气助词,可不译,本句的意思就是“我反而自讨没趣。”(《晏子使楚》)又如:“子猷、子敬俱病笃,而子敬先亡”中的“而”是连词,可不译,整句意思是“子猷与子敬都病重,子敬先死去。” “补”,就是增补。(1)变单音词为双音词,如《桃花源记》中“率妻子邑人来此绝境”,“妻子”一词是“妻子、儿女”的意思;(2)补出省略句中的省略成分,如《人琴俱亡》中“语时了不悲”,翻译为:(子猷)说话时候完全不悲伤。 “换”,就是替换。用现代词汇替换古代词汇。如把“吾、余、予”等换成“我”,把“尔、汝”等换成“你”。 “调”就是调整。把古汉语倒装句调整为现代汉语句式。例如《人琴俱亡》中“何以都不闻消息”,“何以”是“以何”的倒装,宾语前置句,意思是“为什么”。 “变”,就是变通。在忠实于原文的基础上,活译有关文字。“子猷问左右”(人琴俱亡))中的“左右”指的是“手下的人”,“左右对曰”(《晏子使楚》中的“左右”指的是“近臣”。 古文翻译口诀 古文翻译,自有顺序,首览全篇,掌握大意; 先明主题,搜集信息,由段到句,从句到词, 全都理解,连贯一起,对待难句,则需心细, 照顾前文,联系后句,仔细斟酌,揣摩语气, 力求做到,合情合理,词句之间,联系紧密。 若有省略,补出本意,加上括号,表示增益。 人名地名,不必翻译,人身称谓,依照贯例, "吾""余"为我,"尔""汝"为你。省略倒装,都有规律。 实词虚词,随文释义,敏化语感,因句而异。 译完之后,还须仔细,逐句对照,体会语气, 句子流畅,再行搁笔。 三、考试文言文翻译方法十字诀例析 (一)增。就是增补,在翻译时增补文言文省略句中的省略成分。注意:补出省略的成分或语句,要加括号。

文言文哲理句子加翻译

文言文哲理句子加翻译 经典句子 文言文哲理句子加翻译 1、见侮而不斗,辱也。译:当正义遭到侮辱、欺凌却不挺身而出,是一种耻辱的表现。 2、不戚戚于贫贱,不汲汲于富贵。译:不为贫贱而忧愁,不热衷于发财做官。 3、一寸山河一寸金。译:祖国的每一寸山河比一寸黄金还要宝贵,是绝不能让给外人的。 4、勿以恶小而为之,勿以善小而不为。译:对任何一件事,不要因为它是很小的、不显眼的坏事就去做;相反,对于一些微小的。却有益于别人的好事,不要因为它意义不大就不去做它。 5、不迁怒,不贰过。译:犯了错误,不要迁怒别人,并且不要再犯第二次。 6、邑人奇之,稍稍宾客其父,或以钱币乞之。译:同县的人对他能作诗感到惊奇,渐渐地请他的父亲去做客,有的人还用钱求仲永题诗。 7、三人行,必有我师焉,择其善者而从之,其不善者而改之。译:三个人在一起,其中必有某人在某方面是值得我学习的,那他就可当我的老师。我选取他的优点来学习,对他的缺点和不足,我会引

以为戒,有则改之。 8、人生自古谁无死,留取丹心照汉青。译:自古以来,谁都难免会死的,那就把一片爱国的赤胆忠心留在史册上吧! 9、三人行,必有我师焉;择其善者而从之,其不善者而改之。译:几个人在一起走路,其中一定有人可以当我的老师。应当选择他们的优点去学习,看到自己也有他们的缺点就要改正。 10、中峨冠而多髯者为东坡。译:中间戴着高高的帽子长着浓密胡子的人是苏东坡。 11、有益国家之事虽死弗避。译:对国家有利的事情要勇敢地去做,就算有死亡的危险也不躲避。 12、良药苦于口而利于病,忠言逆于耳而利于行。译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。 13、少顷,但闻屏障中抚尺一下,满坐寂然,无敢哗者。译:过了一会儿,只听到围幕中抚尺一拍,全场都安静下来,没有一个敢大声说话的。 14、小来思报国,不是爱封侯。译:从小就想着报效祖国,而不是想着要封侯当官。 15、屠大窘,恐前后受其敌。译:屠户很窘迫,恐怕前后受到两狼的攻击。 16、宾客意少舒,稍稍正坐。译:宾客们的心情稍微放松了,身子渐渐坐正了。

for循环语句的翻译

课程设计任务书 学生姓名:辛波专业班级:计算机0707班 指导教师:彭德巍工作单位:计算机科学与技术学院 题目: FOR循环语句的翻译程序设计(递归下降法、输出四元式) 初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)写出符合给定的语法分析方法的文法及属性文法。 (2)完成题目要求的中间代码四元式的描述。 (3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。 (4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述); 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码); 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等); 9 参考文献(按公开发表的规范书写)。 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试及测试。 周5:撰写课程设计报告。 设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午10点。 指导教师签名: 2010年 01月 08日 系主任(或责任教师)签名: 2010年 01月 08日

《文言文语句翻译》

《文言文语句翻译》(高三参赛) 一、设计说明 高考对文言文语句翻译的考查,虽然材料选自课外,但是考查立足于课内,立足于考查学生对所学文言知识能否灵活运用之上,对学生理解并翻译语句能力的客观考查,符合课程改革和语文教学的发展方向。结合《课程标准》,立足教材本身,勾连高考试题,我设计引导学生在理解和运用语言的实践活动中悟法、学法、用法,调动学生自主、合作、探究学习的积极性,进行适合学生实际水平的有效复习。 该学案分三部分,课前案重在引导学生了解高考命题要求及考点阐释,通过自主复习,运用课内掌握的文言基础知识,总结出语句翻译的具体方法。课中案重在就学生自主反馈的翻译方法进行展示和纠正,以练—讲—练的形式,将课内例句与高考样题衔接起来,渐次推进,引导学生灵活运用翻译方法,总结答题规律,提升掌握语言文字的能力。课后案作为当日作业,旨在让学生夯实基础,巩固演练,继续钻研,锐意进取。二、材料依据 必修教材篇目《师说》《赤壁之战》《鸿门宴》《齐桓晋文之事》等,《〈史记〉选读》篇目《信陵君窃符救赵》《廉颇蔺相如列传》及08—10年高考部分省份样题。 三、设计内容: 学习目标: 知识与能力:了解并掌握文言文语句翻译的具体要求,探求翻译的具体方法。 过程与方法:解读考点,夯实旧知,练中悟法、学法。 情感态度与价值观:培养扎实严谨的学习作风。 课前复习步骤: 一、解读考点 阅读并勾画要点:考纲中“理解并翻译文中的句子”,意思是说“翻译”须以“理解”为前提,“理解”,就是准确把握字句在文段中的正确的意义;而“翻译”则是将文言句子译为规范的现代汉语。考查的句子是有特点的,在实词、虚词、句式、活用、通假字等方面有典型性的句子。测试题目出在“课外”,答案在“课内”。这里“课外”的含义一般指“选材”是学生没学过的,题目是没做过的;“课内”的含义可从两个方面理解:一是指测试的知识是学生“课内”学过的,二是学生可以利用学过的知识加以推断。 二、明确原则 文言文语句翻译原则——信(忠实原文)、达(文意通达流畅)、雅(语言富有文采)。 三、链接课内 根据参考篇目,结合梳理笔记,复习文言基础知识。 四、探求方法 1、翻译下列句子,注意句中划线和括号处,并用一个词概括所用方法。要求书写规范。第一组:魏安釐王二十年,秦昭王已破赵长平军,又进兵围邯郸。 译文:。 劳苦而功高如此,未有封侯之赏…… 译文:。

WHILE循环语句的翻译程序设计(简单优先法、输出四元式)

WHILE循环语句的翻译程序设计(简单优先法、输出四元式) 1 需求说明或问题描述 1.1 问题描述 对C++中while循环语句的理解及分析,通过编译中的词法分析、语法分析、语义分析及中间代码生成等编译过程,用简单优先分析法分析并翻译while语句。 1.2 需求说明 1 写出符合给定的语法分析方法的文法及属性文法 2 完成题目要求的中间代码四元式的描述 3 写出给定的语法分析方法的思想,完成语法分析及语义分析程序设计 4 设计若干用例,上机通过测试 2 文法及语法设计 2.1文法及属性文法: 文法G=(V N ,V T ,P ,S) 其中V N={S , B, E, C, A, B, P, T} V T={w, (, ), { ,}, i, ;} P={ S -> w(B){E} E -> C C -> CA C -> A A -> iPA A -> i; P -> +|-|*|/ B -> iTi B-> i T -> >|<|>=|<=|== } 2.2 语法分析方法描述及语法分析表设计 2.2.1 语法分析方法描述: 简单优先分析法是按照文法符号(终极符和非终极符)的优先关系确定句柄的。 基本思想可设计如下,首先根据已知优先文法构造相应优先关系矩阵,并将

文法的产生式保存,设置符号栈S,步骤如下: (1)将输入符号串a1a2…a n#依次逐个存入符号栈S中,直到遇到栈顶符号a i的优先性>下一个待输入符号a j为止。 (2)栈顶当前符号a i为句柄尾,由此向左在栈中找句柄的头符号a k,即找到a k-1

古文之句子翻译

2015年中考语文复习之句子翻译训练 《小石潭记》(八上) 5.潭中鱼可百许头,皆若空游无所依。 ——潭中的鱼大约有一百来条,都好像在空中游动,什么依靠也没有似的。 6.日光下澈,影布石上。 ——阳光照到水底,鱼的影子映在水底的石上。 7.佁然不动,俶而远逝。 ——呆呆地一动不动,忽然间向远处游去了。 8.斗折蛇行,明灭可见。 ——看到(溪身)像北斗星那样曲折,(溪水)像蛇那样蜿蜒曲折,时隐时现。 9.其岸势犬牙差互。 ——溪岸的形状像狗牙那样参差不齐。 10.凄神寒骨,悄怆幽邃。 ——使人感到心神凄凉,寒气透骨,寂静极了,幽深极了。 《马说》(八下) 3.且欲与常马等不可得,安求其能千里也? ——想要跟普通的马等同尚且不可能,又怎么能要求它日行千里呢?4.策之不以其道,食之不能尽其材,鸣之不能通其意 ——驱使它,不能按照正确的方法;喂养它又不能使它充分发挥自己的才能;听它嘶鸣却不懂得它的意思。 5.其真无马邪?其真不知马也。 ——难道真的没有千里马吗?恐怕是他们真不识千里马吧! 《送东阳马生序》(八下) 1.天大寒,砚冰坚,手指不可屈伸,弗之怠。 ——(有时)天气非常寒冷,砚池里的水结成很硬的冰,手指(冻僵)不能弯曲、伸直,也不敢放松抄书。 2.录毕,走送之,不敢稍逾越。 ——抄完,跑者送还书,不敢稍微超过约定的期限。 3.既加冠,益慕圣贤之道。 ——已经成年,更加仰慕圣贤的学说。 4.又患无硕师名人与游,尝驱百里外从乡之先达执经叩问。 ——又担心没有才学渊博的老师、名人和他们交游,曾经跑到百里之外,拿着经书向当地有道德有学问的前辈请教。 5.先达德隆望尊,门人弟子填其室,未尝稍降辞色。 ——那位前辈道德高,声望高,学生挤满了他的屋子,但他并没有把言辞放委婉些,把脸色放温和些。

FOR循环语句的翻译程序设计(LL(1)法、输出三地址)

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: FOR循环语句的翻译程序设计(LL(1)法、输出三地址表示)初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体 要求) (1)写出符合给定的语法分析方法的文法及属性文法。 (2)完成题目要求的中间代码三地址表示的描述。 (3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。 (4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述); 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码); 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等); 9 参考文献(按公开发表的规范书写)。 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试及测试。 周5:撰写课程设计报告。 设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午10点。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

FOR循环语句的翻译程序设计 ——LL(1)法、输出三地址1.系统描述 1.1问题描述 用LL(1)法设计、编制、调试一个FOR(表达式1;表达式2;表达式3)〈赋值语句〉的语法及语义分析程序,输出三地址代码。 1.2功能描述 (1)能对for循环语句做词法分析,并将其中的某些语句做预处理,如i++转换为i=i+1等。 (2)能依据给定的LL(1)文法判断输入串是否符合LL(1)文法 (3)给出输入串的LL(1)分析过程 (4)完成对语句中控制变量赋值语句,控制条件语句以及控制变量变换语句的翻译 (5)完成对赋值语句包括复杂语句的翻译 (6)能够对三个表达式缺少一个或多个的情况下进行翻译 (7)用翻译后的语句以三地址代码的中间代码形式正确的表达for循环的执行流程。 2.文法及属性文法的描述 2.1文法的语言描述 (0)A->for(C;C;C){Y} (“}Y{)C;C;C(for”) (1)Y->i=E; (“;E=i”) (2)C->iD (“Di”) (3)C-> (“”) (4)D->=E (“E=”) (5)D->>E (“E>”) (7)E->LM (“ML”) (8)M->+LM (“ML+”)

兼语句

兼语句 ●林秀琴 你发现没有,在生活里一个人可以身兼不同的角色,比如你的妈妈,她既是你的妈妈,也是你爸爸的妻子,又是你外婆的女儿,还是你姨的姐妹。再比如你自己,你是你妈妈的孩子,又是你老师的学生,还是你弟弟的哥哥。有意思吧?汉语的句子也有这样的能力。有时候,一个句子中有一个部分,既是主语,又是宾语,它身兼两种角色,具有两个能力,这种句子就叫“兼语句”。比如“朋友请我看电影”这个句子,“朋友”“请”的是“我”,谁“看电影”呢?也是“我”,——“我”是前边主语的宾语,又是后边谓语的主语,就好像你是你妈妈的孩子、你弟弟的哥哥一样。 有点复杂,是不是?没关系,聪明的你,学习以后就明白了。 1、表示使令意义(英文翻译)的兼语句 汉语里有一类词表示让别人做什么,我们说这类词具有使令意义,如“请、让、叫、要求、同意、派、邀请、约”。 (1)肯定式(请加英文) 主语+动词1+兼语+动词2+宾语 朋友请我去看电影。 妈妈让我快写作业。

老师叫我去他的办公室。 老板要求他三点到公司。 (2)否定式(英文) 主语+不/没+动词1+兼语+动词2+宾语 妈妈不同意我去中国。 他没邀请汤姆参加生日晚会。 老板没派他去纽约。 2、第一个动词是“有”的兼语句 (1)肯定式(请加英文) 主语+ 有+ 兼语+ 谓语(动词/形容词) 我有一个朋友去中国留学了。 我有一个同学很幽默。 (2)否定式(英文) 主语+ 没有+ 兼语+ 谓语(动词/形容词) 那个学校没有人会说中文。 我们班没有人去打球。 3、第一个动词是表示喜好意义的兼语句 主语+(不)动词1+兼语+动词/形容词 老师夸我很聪明。 我喜欢他很幽默。 我讨厌他总开玩笑。 我不喜欢他总迟到。

(完整版)文言语句翻译专项练习(含答案)

文言语句翻译专项练习 1.阅读下面的文言文,将画线的部分译成现代汉语 征和二年,卫太子为江充所败,而燕王旦、广陵王胥皆多过失。是时上年老,宠姬赵婕妤有男,上心欲以为嗣,命大臣辅之。察群臣唯光任大重,可属社稷。上乃使黄门画者画周公负成王朝诸侯以赐光。后元二年春,上游五柞宫,病笃,光涕泣问曰:“如有不讳,谁当嗣者?”上曰:“君未谕前画意邪?立少子,君行周公之事。”(《汉书·霍光传》) 译文: 2.阅读下面的文言文,翻译划线的两个句子。 李林甫为相,凡才望功业出己右及为上所厚、势位将逼己者,必百计去之,①尤忌文学之士,或阳与之善,啖以甘言,而阴陷之。②(《资治通鉴·卷二一五》) ① ② 3.阅读下面的文言文,翻译划线的两个句子 孔子行道而息,马逸,食人之稼,野人取其马。子贡请往说之。毕辞,野人不听。有鄙人始事孔子者,曰:“请往说之。”因谓野人曰:“子不耕于东海,吾不耕于西海也,吾马何得不食子之禾?”其野人大说,相谓曰:“说亦皆如此其辩也,独如向之人!”解马而与之。(选自《吕氏春秋》) ①有鄙人始事孔子者 ②说亦皆如此其辩也,独如向之人!

4.把下面画横线的句子翻译成现代汉语 及之而后知,履之而后艰,乌有不行而能知者乎?披五岳之图,以为知山,不如樵夫之一足;谈沧溟之广,以为知海,不如估客之一瞥;疏八珍之谱,以为知味,不如庖丁之一啜。(魏源《海国图志》) (1)及之而后知,履之而后艰,乌有不行而能知者乎? 译文: (2)不如樵夫之一足。 译文: 5.将下面一段文言文译成现代汉语。 解(郭解)出入,人皆避之。有一人独箕踞视之,解遣人问其名姓。客欲杀之。解曰:“居邑屋至不见敬,是吾德不修也,彼何罪!”乃阴属尉史[1]曰:“是人,吾所急[2]也,至践更[3]时脱之。”(《史记·游侠列传》) 注释:[1]尉史,县尉手下的书吏,古代管户口的小官。[2]急,重也。[3]践更,按期轮番服役。 译文: 6.将画线的句子译成现代汉语(未画线的句子已译出): 孟子曰:圣人,百世之师也,伯夷、柳下惠是也。故闻伯夷之风者,顽夫廉,懦夫有立志;闻柳下惠之风者,薄夫敦,鄙夫宽。奋乎百世之上,百世之下,闻者莫不兴起也。非圣人而能若是乎?——而况于亲炙之者乎?(《孟子·尽心下》) 译文:孟子说:。所以在那些听到伯夷的风格和操守的人当中,即使是贪婪的人也变得廉洁了,懦弱的人也变得意志坚强了;

WHILE循环语句的翻译程序设计.

WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示) 1 系统描述 按照课程设计的要求,写一个能识别while循环语句的文法,通过一定的变换使它符合递归下降法的要求,然后按照这个文法编写一个程序,该程序能识别输入的语句是否符合while语句的文法,或者能不能通过文法的开始符号推导出该语句。 该程序应该包括词法分析器,能对输入的语句进行词法分析,然后再对结果进行语法分析。词法分析器应能识别关键字,标示 符,常量,操作符等。 该程序的语法分析器能对输入的语法进行分析,判断输入语句能否满足while循环语句的文法。通过递归下降的方法对语句进行分析,看能否通过开始符号推导出来。 该程序的语义分析器就是对分析结果进行输出,要求输出结果是 三地址形式的。 2 文法及属性文法的描述 2.1文法描述 语句 > ::= while (< 条件表达式 > (< 赋值语句 > | 语句 > <条件表达式> ::= (<标识符>|<无符号整数>)<条件运算符> (<标识符>|<无符号整数> <标识符> ::= <字母> (<字母>|<数字> <条件运算符> ::= > | < | = <无符号整数> ::= <数字>(<数字>

<赋值语句> ::= <标识符>=(<标识符> | <数字> <算术运算符> (<标识符> | <数字> <算术运算符> ::= + | - | * | / <赋值语句> ::= <标识符>=<标识符> | <数字> 2.2递归文法 while语句文法: S -> while (B S | i=E B -> E relop E relop -> < | = | > E -> E+E | E-E | E*E | E/E | (E | i | n 在编写程序的时候用到的是递归下降法,而递归下降法对文法的要求是不能包含左递归,对上述的文法进行消除左递归之后,得 到如下的递归文法: S -> while (B S | i=E B -> E relop E relop -> < | = | > E -> (E F | iF | nF F -> +EF | -EF | *EF | /EF | ε 2.3属性文法的描述 产生式属性文法 S -> while (B S1S.begin:=newlabel;

FOR循环语句翻译程序设计简单优先法三地址码JAVA

学 号: 27 课内实践报告课程名称编译原理 题目FOR循环语句的翻译程序设计(简单优先法、输出三地址码) 学院计算机科学及技术专业计算机科学及技术班级1201 姓名李潇颖 指导教师林泓

2014年12月9日 课内实践任务书 学生姓名:李潇颖专业班级:计算机1201班 指导教师:林泓工作单位:计算机科学及技术学院 题目: FOR循环语句的翻译程序设计(简单优先法、输出三地址码) 初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课内实践工作量及其技术要求,以及说明书撰写等具体要求) (1)写出符合给定的语法分析方法的文法及属性文法。 (2)完成题目要求的中间代码三地址码的描述。 (3)写出给定的语法分析方法的思想,完成语法分析和语义分

析程序设计。 (4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5)设计报告格式按附件要求书写。课内实践报告书正文的内容应包括: 1 系统描述(问题域描述); 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序 列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码); 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、 收获及体会等); 9 参考文献(按公开发表的规范书写)。 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试及测试。 周5:撰写课内实践报告。 设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。

文言文翻译技巧和方法

文言文翻译技巧和方法 一、基本方法:直译和意译文言文翻译的基本方法有直译和意译两种。所谓直译,是指用现代汉语的词对原文进行逐字逐句地对应翻译,做到实词、虚词尽可能文意相对。直译的好处是字字落实;其不足之处是有时译句文意难懂,语言也不够通顺。所谓意译,则是根据语句的意思进行翻译,做到尽量符合原文意思,语句尽可能照顾原文词义。意译有一定的灵活性,文字可增可减,词语的位置可以变化,句式也可以变化。意译的好处是文意连贯,译文符合现代语言的表达习惯,比较通顺、流畅、好懂。其不足之处是有时原文不能字字落实。这两种翻译方法当以直译为主,意译为辅。 二、具体方法:留、删、补、换、调、变。 “留”:就是保留。凡是古今意义相同的词,以及古代的人名、地名、物名、官名、国号、年号、度量衡单位等,翻译时可保留不变。例如:《晏子使楚》中的“楚王”、“晏婴”、“晏子”等不用翻译。 “删”,就是删除。删掉无须译出的文言虚词。例如:“寡人反取病焉”的“焉”是语气助词,可不译,本句的意思就是“我反而自讨没趣。”(《晏子使楚》)又如:“子猷、子敬俱病笃,而子敬先亡”中的“而”是连词,可不译,整句意思是“子猷与子敬都病重,子敬先死去。” “补”,就是增补。(1)变单音词为双音词,如《桃花源记》中“率妻子邑人来此绝境”,“妻子”一词是“妻子、儿女”的意思;(2)补出省略句中的省略成分,如《人琴俱亡》中“语时了不悲”,翻译为:(子猷)说话时候完全不悲伤。 “换”,就是替换。用现代词汇替换古代词汇。如把“吾、余、予”等换成“我”,把“尔、汝”等换成“你”。“调”就是调整。把古汉语倒装句调整为现代汉语句式。例如《人琴俱亡》中“何以都不闻消息”,“何以”是“以何”的倒装,宾语前置句,意思是“为什么”。“变”,就是变通。在忠实于原文的基础上,活译有关文字。“子猷问左右”(人琴俱亡))中的“左右”指的是“手下的人”,“左右对曰”(《晏子使楚》中的“左右”指的是“近臣”。 古文翻译口诀古文翻译,自有顺序,首览全篇,掌握大意;先明主题,搜集信息,由段到句,从句到词,全都理解,连贯一起,对待难句,则需心细,照顾前文,联系后句,

for循环实例.

for循环实例 读取的是数组expr的行数,然后程序执行循环体(loopbody),所以expr有多少列,循环体就循环多少次。expr经常用捷径表达式的方式,即first:incr:last。 在for和end之间的语句我们称之为循环体。在for循环运转的过程中,它将被重复的执行。For循环结构函数如下: 1.在for循环开始之时,matlab产生了控制表达式。 2.第一次进入循环,程序把表达式的第一列赋值于循环变量index,然后执行循环体内的语句。 3.在循环体的语句被执行后,程序把表达式的下一列赋值于循环变量index,程序将再一次执行循环体语句。 4.只要在控制表达式中还有剩余的列,步骤3将会一遍一遍地重复执行。 10次。循环系数ii在第一次执行的时侯是1,第二次执行的时侯为2,依次类推,当最后一次执行时,循环指数为10。在第十次执行循环体之后,再也没有新的列赋值给控制表达式,程序将会执行end语句后面的第一句。注意在循环体最后一次执行后,循环系数将会一直为10。 环指数ii在第一次执行时为1,第二次执行时为3,依此类推,最后一次执行时为9。在第五次执行循环体之后,再也没有新的列赋值给控制表达式,程序将会执行end语句后面的第一句。注意循环体在最后一次执行后,循环系数将会一直为9。 循环指数ii在第一次执行时为1,第二次执行时为3,第三次执行时为7。循环指数在循环结束之后一直为7。

循环指数ii 在第一次执行时为行向量??? ???41,第二次执行时为??? ???54,第三次执行时为 ??????76。这个例子说明循环指数可以为向量。 例1 阶乘(factorial )函数 这种循环将会执行5次,ii 值按先后顺序依次为1,2,3,4,5。n_factorial 最终的计算结果为1ⅹ2ⅹ3ⅹ4ⅹ5=120。 例2 统计分析 执行如下算法: 输入一系列的测量数,计算它们的平均数和标准差。这些数可以是正数,负数或0。 答案: 这个程序必须能够读取大量数据,并能够计算出这些测量值的平均数和标准差。这些测量值可以是正数,负数或0。 因为我们再也不能用一个数来表示数据中止的标识了,我们要求用户给出输入值的个数,然后用for 循环读取所有数值。 下面的就是这个修定版本的程序。它允许各种输入值,请你自己验证下面5个输入值的

初中文言文重要语句翻译归纳

初中文言文重要语句翻译归纳 导读:初中文言文重要语句翻译归纳 1.温故而知新,可以为师矣:温习旧的知识,进而懂得新的知识,这样的人可以做老师了。 2.学而不思则罔;思而不学则殆:光读书学习不知道思考,就迷惑不解;光思考却不去读书学习,就会疑惑而无所得。 3.默而识之,学而不厌,诲人不倦:默默地记住所学的知识,学习却不感觉满足,教导他人不知疲倦。 4.三人行,必有我师焉;择其善者而从之,其不善者而改之:几个人在一起行路,一定有可以作为我的教师的人在中间;选择他们的长处来学习,他们的短处,自己如果也有,就要改掉它。 5.知之者不如好之者,好之者不如乐之者:懂得它的人不如喜爱它的人,喜爱它的人又不如以它为乐的人。 6.逝者如斯夫,不舍昼夜:消逝的时光像这河水一样呀!日夜不停。 7.医之好治不病以为功:医生喜欢给没有病的人治病,把治好“病”作为自己的功劳 8.土地平旷,屋舍俨然,有良田美池桑竹之属:这里土地平坦开阔,房屋整整齐齐,有肥沃的田地,美丽的池塘和桑树竹子之类。 9.黄发垂髫,并怡然自乐:老人和小孩都非常快乐,自由自在。 10.寒暑易节,始一返焉:冬夏换季,才往返一次呢。 11.苔痕上阶绿,草色入帘青:青苔碧绿,长到台阶上,草色青

葱,映入帘子中。 12.无丝竹之乱耳,无案牍之劳形:没有嘈杂的音乐扰乱两耳,没有官府公文劳累身心。 13.予独爱莲之出淤泥而不染,濯清涟而不妖:我唯独喜爱莲花,它从污泥中长出来,却不受到污染,在清水里洗涤过但是不显得妖媚。 14.噫!菊之爱,陶后鲜有闻。莲之爱,同予者何人?牡丹之爱,宜乎众矣:唉!对于菊花的爱好,陶渊明以后很少听到了。对于莲花的爱好,像我一样的人还有什么人呢?对于牡丹的爱好,人数当然就很多。 感谢您的阅读,本文如对您有帮助,可下载编辑,谢谢

文言文经典句子翻译

中考文言文经典句子翻译及考点归纳 新疆哈密石油外国语学校黄萍 邮箱:huangf@https://www.360docs.net/doc/a6785894.html, 邮编:839009 【中考试题分析】 从历年的中考试题来看,考题中设置的文言文翻译题目往往是揭示文章主旨、反映人物性格、体现文章特色的重要句子,或者是琅琅上口、意蕴优美、至今流传甚广的名句,抑或是含有通假字、古今异义、虚数、词类活用、句式特点明显,或者词法、句法有变化的句子。翻译的基本原则是直译为主,意译为辅。 【试题得分解析】 一般来说,文言文句子翻译中往往含有“知识点”,即得分点,在评分时各知识点都占据一定比例的分值,如若答不到或答不完整这细小的得分点,该试题往往拿不到满分。所以掌握文言文句子翻译必须要弄明白句子的知识点即得分点所在。 【中考文言文经典句子翻译及考点归纳】 《论语》 1、温故而知新,可以为师矣 得分要点分解:词类活用。故,指学过的知识,旧知识。新,形容词用作名词,新的知识。 翻译:温习旧的知识,进而懂得新的知识,这样的人可以做老师了。

2、学而不思则罔;思而不学则殆 得分要点分解:名句。罔,迷惑。殆,有害。 翻译:光读书学习不知道思考,就迷惑不解;光思考却不去读书学习也是有害的。 3、三人行,必有我师焉;择其善者而从之,其不善者而改之 得分要点分解:三,古代表示多数,古代汉语里的“三”往往不是具体的数字,而是泛指多数。行,走路。 翻译:几个人在一起行路,一定有可以作为我老师的人在中间;选择他们的长处来学习,他们的短处,如果自己也有,就要改掉它。 4、知之为知之,不知为不知,是知也 得分要点分解:(前四个)知,知道,懂得。(后一个)知,通“智”,聪明。 翻译:知道就是知道,不知道就是不知道,这就是聪明智慧。 5、岁寒,然后知松柏之后凋也 得分要点分解:凋,凋谢。 翻译:在寒冷的冬天,才知道松柏是最后落叶的。 《桃花源记》 6、问今是何世,乃不知有汉,无论魏晋 得分要点分解:乃,竟。无论,不要说,更不必说,“无”“论”是两个词,不同于现代汉语里的“不论”。 翻译:问现在是什么朝代,竟然不知道有过汉朝,更不必说魏晋了。

相关文档
最新文档