当前位置:文档之家› 编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)

编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)

编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)
编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)

课程设计任务书

题目: IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)

初始条件:

理论:学完编译课程,掌握一种计算机高级语言的使用。

实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体

要求)

(1)写出符合给定的语法分析方法的文法及属性文法。

(2)完成题目要求的中间代码三地址表示的描述。

(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。

(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:

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

2 文法及属性文法的描述;

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

4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;

5 编译系统的概要设计;

6 详细的算法描述(流程图或伪代码);

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

8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);

9 参考文献(按公开发表的规范书写)。

时间安排:

设计安排一周:周1、周2:完成系统分析及设计。

周3、周4:完成程序调试及测试。

周5:撰写课程设计报告。

设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。

设计报告书收取时间:设计周的次周星期一上午10点。

指导教师签名: 2013年月日

系主任(或责任教师)签名: 2013年月日

IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)

1 系统描述

1.1题目

IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)

1.2.目的

通过设计、编制、调试一个条件语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。

1.3.设计内容及步骤

对条件语句: IF 〈布尔表达式〉 THEN 〈赋值语句〉 ELSE 〈赋值语句〉

(1)按给定的题目写出符合语法分析方法要求的文法和属性文法描述。

(2)按给定的题目给出语法分析方法的思想及分析表设计。

(3)按给定的题目给出中间代码序列的结构设计。

(4)完成相应的词法分析、语法分析和语义分析程序设计。

(5)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

2 文法及属性文法的描述

2.1文法

文法是用于描述语言的语法结构的形式规则(即语法规则)。这些规则必须是准确的、易于理解的以及有相当强的描述能力。由这种规则所产生的程序语言应有利于句子分析和翻译,而且,最好能通过这些规则自动产生有效的语法分析程序。

IF-ELSE条件语句的文法G[S]如下所示:

(1) S -> CM

(2) S -> TM

(3) M -> begin L end

(4) C -> if B then

(5) T -> C M else

其中非终结符B为布尔表达式,其文法G[B]如下:

(1) B -> B1 or B2

(2) B -> B1 and B2

(3) B -> not B1

(4) B -> ( B1 )

(5) B -> id1 rop id2

(6) B -> true

(7) B -> false

而在文法G[S]中非终结符L表示赋值语句块,其文法G[L]如下:

(1) L -> L1 A ;

(2) L -> A;

(3) A -> id = M

(4) M -> E

(5) E -> E1 + E2

(6) E -> E1 * E2

(7) E -> -E1

(8) E -> ( E1 )

(9) E -> id

2.2属性文法

属性文法是在上下文无关文法的基础上,为每个文法符号(终结符或者非终结符)配备若干相关的“值”(与文法符号相关的属性)。

在一个属性文法中,对应于每个产生式A→a都有一套与之相关联的语义规则,每

规则的形式为:b:=f(c

1,c

2

,…,c

k

)其中f是一个函数,而且或者①b是A的一个综合属

性并且c

1,c

2

,…,c

k

是产生式右边文法符号的属性或者②非终结符既可有综合属性也可

有继属性,文法开始符号的所有继承属性作为属性计算前的初始值[1]。

2.2.1 语义变量和语义动作说明

对于文法G[L],首先对id表示的单词定义一属性https://www.doczj.com/doc/8210554855.html,,用做语义变量,用Lookup(https://www.doczj.com/doc/8210554855.html,)语义函数审查https://www.doczj.com/doc/8210554855.html,是否出现在符号表中,如在,则返回一指向该登陆项的指针,否则返回nil。语义过程emit表示输出四元是到输出文件上。语义过程newtmp表示生产一临时变量,每调用一次,生成一新的临时变量。语义变量E.place,表示存放E值的变量名在符号表的登陆项或一整数码(若此变量时一个临时变量)[2],2.2.1 给出了翻译赋值语句块到三地址的语义描述。

2.2.1 G[S]的属性文法为:

(1) S -> CM { S.chain := merge(C.chain,M.chain) }

(2) S -> TM { S.chain := merge(T.chain,M.chain) }

(3) M -> begin L end { M.chain := L.chain}

(4) C -> if B then { bakpatch(B.true,nextstat)

C.chain := B.false}

(5) T -> C M else { q := nextstat

emit(‘GOTO’--)

backpatch(C.chain,nextstat)

T.chain := merge(M.chain,q)}

2.2.2 G[B]的属性文法为:

(1) B -> B1 or B2 { backpatch(B1.false,B2.codebgin);

B.codebegin := B1.codebegin;

B.true := merge(B1.true,B2.true);

B.false := B2.false}

(2) B -> B1 and B2 { backpatch(B1.true,B2.codebegin);

B.codebegin := B1.codebegin;

B.true := B2.true;

B.false := merge(B1.false,B2.false);}

(3) B -> not B1 { B.true := B1.false;

B.codebegin := B1.codebegin;

B.false := B1.true;}

(4) B -> ( B1 ) { B.true := B1.true;

B.codebegin := B1.codebegin;

B.false := B1.false;}

(5) B -> id1 rop id2 { B.true := nextstat;

B.codebegin := nextstat;

B.false := nextstat+1;

emit(‘if’id1.place‘rop’id2.place‘goto’--); emit(‘goto’--)}

(6) B -> true { B.true := nextstat;

B.codebegin := nextstat;

emit(‘goto’--)}

(7) B -> false { B.false := nextstat;

B.codebegin := nextstat;

emit(‘goto’--)}

其中nextstat给出在输出序列中下一三地址式子的序号。emit过程没调用一次,nextstat增加1

2.2.3 G[L]的属性文法为:

(1) L -> L1 A ; { L.chain := A.chain}

(2) L -> A; { L.chain := A.chain}

(3) A -> id := M { p := lookup(https://www.doczj.com/doc/8210554855.html,);

if p ≠ nil then

emit(p ‘:=’ E.place);

else error}

(4) M -> E { }

(5) E -> E1 + E2 { E.place := newtemp;

emit(E.place ‘:=’E1.place ‘+’ E2.place)}

(6) E -> E1 * E2 { E.place := newtemp;

emit(E.place ‘:=’ E1.place ‘*’ E2.palce)}

(7) E -> -E1 { E.palce := newtemp;

emit(E.place ‘:=’ ‘minus’E1.place)}

(8) E -> ( E1 ) { E.place := E1.place }

(9) E -> id (6)A->num { p := lookup(https://www.doczj.com/doc/8210554855.html,);

if p ≠ nil then

E.palce := p

else error}

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

3.1简单优先法的定义构造及优缺点

3.1.1简单优先法定义构造

一个文法G,若它不含ε产生式,也不含任何右部相同的不同产生式,并且它的任何符号对(X,Y),或者没有关系,或者存在下述三种关系:=、<、>之一,则称该文法是一个简单优先文法。

A)X=Y当且仅当G中含有形如P→…XY…的产生式

B)X

C)X>Y当且仅当Y为G的终结符,G中含有形如P→…QR…的产生式,其中Q,R为非终结符,且Q →…X,Y∈First(R)

D)对任何X,若文法开始符号S→X…,则##。[3]

3.1.2简单优先法的优缺点

优点:准确、规范,技术简单。

缺点:适用的范围小,构造的分析表太大,分析效率较低。

3.2语法分析

为实现简单优先算法,可以使用工作栈.用以寄存操作数或运算结果.算法的基本思想是:

(1) 置初始状态:S(1):=‘#’, i:=1, j:=1

(2) 若 S(i)与T(j)无任何关系,则出错停机

(3) 若 S(i)= T(j)或S(i)〈T(j),则把T(j)送入S栈中,读下一符,转(2)。

(4) 若S(i)〉T(j),则从S栈顶开始往前栈串Sj1 ,Sj1+1,…,Si

其中 Sj1为第一个使 Sj1-1〈Sj1 ,然后用Sj1,Sj1+1,…Si去查生产式表,

若查到有相同右部的产生式即U→Sj1,Sj1+1,…Si,则从栈中退掉子串

Sj1,Sj1+1,…Si,并把U进栈;然后转(2)。若查不到转出错处理。

(5) 若T(j)=‘#’,并且S栈的内容为# Z(Z为文法开始符号)则正确停机。否则,出

错停机。

3.3语法分析表设计

3.3.1 G[S]的优先关系表如表1:

表 1 G[S] 的优先关系矩阵

S C T M begin L end if B then else # S < >

C = <

T = <

M = > begin < =

L

end > > if =

B =

then > >

else > >

# < < < < < <

注:表中空白表示无优先关系,分析过程中查找到无优先关系的两个文法符号则表示出错,下同。

3.3.2 G[B]的优先关系表如表2:

表 2 G[B] 的优先关系矩阵

B or and not ( ) id rop true fasle #

B = = = >

or < < <

and < <

not < > (

) >

id > > = > rop =

true > > > false > > >

# < < < <

注:表中id代表标识符,rop代表关系运算符,下同。

3.3.2 G[L]的优先关系表如表3:

表 3 G[L] 的优先关系矩阵

L A ; := ( ) id + - M E * # L = < > A = > ; > > := < < < = <

( < =

) > <

id > = > > >

+ > < < =

- < < =

M >

E > < = = =

* > < < =

# < < <

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

4.1中间代码形式描述

此设计要求使用的是三地址的中间代码,三地址代码是由下面一般形式构成的语句序列: x:=y op z;

其中x,y,z为变量名,常数或编译时产生的临时变量;op代表运算符号如标点,浮点运算符号等等。每个语句的右边只能有一个运算符。

表达式x + y * z翻译成的三地址语句序列是:

t1 := y * z

t2 := x + t1

常用的三地址语句有:

赋值语句x := y op z,x := op y,x := y

无条件转移goto L

条件转移if x relop y goto L

过程调用param x 和call p , n

过程返回 return y

索引赋值x := y[i]和 x[i] := y

地址和指针赋值x := &y,x := *y和*x := y

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

本次课程设计采用四元式的中间代码形式,例如

赋值语句x := y*z*a的三地址表示如下:

001: T1:= a * z

002: T2:= T1 * y

003: x:= T2

if-else语句块:

if a>b and c

begin

p= q+r+s;

c =w;

end

的三地址表示如下:

001: if a > b goto 3

002: goto --

003: if c < d goto 5 004: goto -- 005: T1:= s + r 006: T2:= T1 + q 007: p:= T2 008: c:= w

其中前面的数字表示三地址的序列号或者说是中间代码的地址,Ti 为中间代码翻译过程中产生的临时变量,符号‘—’,表示在后续的翻译过程中待回填的goto 语句转移地址。

5 编译系统的概要设计

5.1程序总体描述

本设计体现语法制导翻译的思想,采用单遍的翻译方法,在语法分析的过程中同时完

成词法分析和中间代码的翻译。

图1 程序总体概要设计

源文件

词法分析

语法分析

中间代码

出错处理

三地址输出文件

5.2 数据结构设计

5.2.1 用于“回填”和“拉链”的链表结构设计如下:

struct Chain {

int label; // 三地址代码语句的序号

Chain* next; // 下一个节点指针

};

5.2.2 属性单词Token的数据结构如下:

struct Token {

char name[20]; //名字

Classify kind; // 类型

Chain* trueChain; // “真链”

Chain* falseChain; // “假链”

Chain* chain; // 待“回填”的链

int codeBegin; // 非终结符的第一个三地址语句序号

int weight; // 该变量用于计算归约用的的产生式序号①

int pos; // 文法符号在优先关系表中的位置

int place; // 属性单词在符号表中的登陆项

double value; // 数值型单词的值,其他类型无定义

int lineNumber; // 单词所在源文件的行号

char orig[20]; // 如为非终结符,该变量用于保存被规约

// 成该非终结符的终结符,否则无定义

}

5.2.3 三地址码数据结构设计

struct TripleCode {

CodeKind kind; // 三地址语句格式种类②

char op; // 运算符

char result[20]; // 运算结果

char opn1[20]; // 操作数1

char opn2[20]; // 操作数2

int destination; // goto语句的转移地址

bool term0; // 结果变量是否是终结符

bool term1; // 操作数1是否是终结符

bool term2; // 操作数2是否是终结符

int serial0; // 如结果为临时变量,用于保存该临时变量的序列号 int serial1; // 如果操作数1为临时变量,用于保存该临时变量的 //序列号

int serial2; // 如果操作数2为临时变量,用于保存该临时变量的 //序列号

};

①根据产生式的序号和产生式右边文法符号的个数,给产生式右边每个文法符号赋予一定的weight值,在规约的时候,产生式右边各个文法符号的weight域相加的和为该产生式的序号,从而确定用哪条产生式规约。

②三地址代码的格式设计为5种,分别是“if-goto”型、“goto”型、赋值型、单目运算型和双目运算型

5.3程序接口声明

5.3.1.1 词法分析器类Lexical的类图

图2 Lexical类

class Lexical

Attributes

private char ch

private int U_inde

private int lineNum

private int len

private int buffEnd

private double value

private ifstream fin

private ofstream fout

private string outputFile

private static int serial

private static int nextstat

private char line[100]

private char word[40]

private int buffer[MAX_BUFFER_SIZE]

private Token tokens[MAX_SYMBOL_SIZE]

private TripleCode codes[MAX_CODE_NUM]

private char separators[SEPARATOR_COUNT]

private char* keywordTable[KEYWORD_COUNT]

private char* operators[OPERATOR_COUNT]

Operations

public Lexical()

public ~Lexical()

public Token* getNextToken()

public Token* getNewToken()

public int lookup()

public void emit()

public void genCode()

public void printCode()

public void backpatch()

public void putBackToken()

public void writeCodeToFile()

public static inline int getNextStat()

public static int getSerialNum()

private int getChar()

private void getWord()

private void skipSlash()

private void getLine()

private int findKeyword()

private int findSeparator()

private void readOperator()

private double string2Double()

5.3.1.2 Lexical类主要接口说明

public Token* getNextToken() // 返回源文件中的下一个属性单词的指针

public Token* getNewToken() // 返回符号表中下一个可用新项目的指针

public int lookup() // 语义函数,查找给定名字的单词是否在符号表中public void emit() // 语义函数,生成一条三地址代码并保存到三地址代

// 码数组中,emit过程每调用一次,nextstat增加1 public void genCode() // 语义函数,作用同emit,genCode每调用一次,

// nextstat也增加1

public void printCode() // 输出三地址码到屏幕

public void backpatch() // 用于回填的函数

public void putBackToken() // 将属性单词写回到词法分析器中

public void writeCodeToFile() // 将三地址码输出到文件中

public static int getNextStat() // 返回下一条中间代码的语句号

5.3.2.1 模板类SStack类图

SStack

Attributes

private T *base

private int size

private int len

private int top

Oprations

public bool isEmpty()

public getLen()

public void push()

public void pop()

public void getTop()

public void clear()

图3 SStac类

5.3.2.2 SStack类接口说明

public bool isEmpty() // 判断栈是否为空

public getLen() // 返回当前栈中元素个数

public void push() // 将元素压入栈中

public void pop() // 栈顶元素出栈

public void getTop() // 取栈顶元素

public void clear() // 将栈清空

5.3.3 其他的程序接口

Token* processBoolean() // 处理布尔表达式文法的函数④

Token* processAssignmentBlock()⑤// 处理赋值语句块的函数

Chain* merge() // 合并链

6 详细的算法描述

6.1词法分析

词法分析是在语法和语义分析过程中进行的,其功能是为语法语义分析提供带属性的单词,管理和维护符号表,提供把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析。

单词的种类有五种。

关键字如if,then,else等。

标识符用户定义的变量名、常数名、过程名等。

运算符如:+,-,*,/,>,<等。

常数如13,34,67等。

界符如“,”“;”“(”“)”“{”“}”等。

词法分析流程图如图4:

图4 词法分析流程图

6.2语法分析

语法分析的任务是识别单词符号序列是否符合给定的语法规则,并在规约时调用相应的语义函数,执行中间代码的翻译。语法分析过程还包含简单的错误处理机制。

语法分析流程图如下:

开始

初始化词法分析

器及符号栈

从词法分析器取下

一个单词

为文件结束

符?

查优先关系表,得栈顶元

素与输入单词优先关系

无关系?

栈顶元素优先级

大于输入单词?

栈顶元素出栈

栈顶元素优先级大

于或等于出栈元

素?

用所有弹栈的元素作为产生式右部规约

规约成开始

符号?出错处理

当前输入单词

进栈

规约后的符号

进栈

图5 语法分析

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

7.1.1 测试用例1

测试用源文件如下:

if a f then

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

#$

其中“#”为文法结束标志,“$”为文件结束标志,下同。运行结果如下图6,

图6 用例1运行结果①文件输出结果为:

001: if a < b goto 7

002: goto 3

003: if c < d goto 5

004: goto --

005: if e > f goto 7

006: goto --

007: T1:= a * z

008: T2:= T1 * y

009: x:= T2

010: T3:= - h

011: d:= T3

012: T4:= s + r

013: T5:= T4 + q

014: p:= T5

015: c:= w

①图中的“goto --",表示布尔表达式的假出口,下同。

7.1.2 测试用例2

测试用源文件如下:

if a>b and c

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

else

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

#$

运行结果如下图7,

图7 用例2运行结果7.1.3 测试用例3

测试用源文件如下:

if a f then

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

#

if a>b and c

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

else

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

#$

运行结果如下图8,

图8 用例3运行结果7.1.3 测试用例4

测试用源文件如下:

invalid beginning if a>b and c

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

else

begin

x = y*z*a;

d= -h;

p= q+r+s;

c =w;

end

#$

运行结果如下图9

WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)

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

文言文句子的翻译

《文言文句子的翻译》 【教学目的】 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翻译过程

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

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

DO-WHILE循环语句的翻译程序设计 (LL(1)法、输出三地址表示) 1. 系统描述 1.1 设计目的 通过设计、编制、调试一个DO-WHILE循环语句的语法及语义分析程序,加深对法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。 1.2 设计内容及步骤 对循环语句: DO〈赋值语句〉WHILE 〈表达式〉 (1)按给定的题目写出符合自身语法分析方法要求的文法和属性文法描述。 (2)按给定的题目给出语法分析方法的思想及分析表设计。 (3)按给定的题目给出中间代码序列的结构设计。 (4)完成相应的词法分析、语法分析和语义分析程序设计。 (5)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 2. 文法及属性文法的描述 2.1 文法描述 K -> do L while S L -> SP P -> ;SP | ε S -> iQE E -> TG G -> +TG | -TG | εT -> FR R -> *FR | /FR | εF -> (E) | i Q -> = | < | > 2.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.先达德隆望尊,门人弟子填其室,未尝稍降辞色。 ——那位前辈道德高,声望高,学生挤满了他的屋子,但他并没有把言辞放委婉些,把脸色放温和些。

《小学文言文解题思路》微课教学设计

《小学文言文解题思路》微课教学设计 掌握文言文的解题方法和技巧。 1、文言文考察知识点。 1.新课导入。 今天我们要学习的就是小学文言文里面一个重要的知识点——文言文,当人们使用“古代汉语”这个术语时,在不同的语境中赋予了它三个不同的含义:古代的汉语、上古汉语和文言。 2.什么是仿句? 文言文”是相对于“白话文”而言。 “文言文”的意思就是指“用书面语言写成的文章”。而“白话文”的意思就是“用常用的直白的口头语言写成的文章”。 例如,想问某人是否吃饭了,用口头语言表述,是“吃饭了吗?”,而用书而语言进行表述,就是“饭否?”。“饭否”就是文言文。 3. 明确文言文仿句翻译要求? “信”即字字落实,力求准确; “达”即文从句顺,力求通顺; “雅”即生动形象,讲究文采; 4.文言文翻译的4点基本素质? 1、掌握作者形象。 2、把握作品出处。 3、掌握文言词汇。 4、翻译全文。 仿句式,仿修辞,仿语境。 5.归纳文言文翻译的遇到障碍。 1、通假字。 2、古今异义。 3、一词多义。 4、词类活用。 6.明确文言文的翻译的步骤,理解文言文的翻译技巧。 1.留。即保留原文中的专有名词、国号、年号、人名、地名、官名、职称、器具名称等,可照录不翻译。 2.删。即删去不译的词。凡是古汉语中的发语词、判断词、在句子结构上起标志作用的助词、凑足音节的助词等,在现代汉语中没有词能替代,便可删去。 3.换。即对古今意义相同,但说法不同的词语,翻译时都要换成现在通俗的词语,使译文通达明快。 4.换。即将文言中的单音节词直接译成以该词为语素的现代汉语的双音节或多音节词。考察学生的语言运用能力,语言表达能力,和情感态度价值观。

兼语句

兼语句 ●林秀琴 你发现没有,在生活里一个人可以身兼不同的角色,比如你的妈妈,她既是你的妈妈,也是你爸爸的妻子,又是你外婆的女儿,还是你姨的姐妹。再比如你自己,你是你妈妈的孩子,又是你老师的学生,还是你弟弟的哥哥。有意思吧?汉语的句子也有这样的能力。有时候,一个句子中有一个部分,既是主语,又是宾语,它身兼两种角色,具有两个能力,这种句子就叫“兼语句”。比如“朋友请我看电影”这个句子,“朋友”“请”的是“我”,谁“看电影”呢?也是“我”,——“我”是前边主语的宾语,又是后边谓语的主语,就好像你是你妈妈的孩子、你弟弟的哥哥一样。 有点复杂,是不是?没关系,聪明的你,学习以后就明白了。 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;

do-while语句翻译程序

DO-WHILE循环语句的翻译程序设计 (LR方法、输出三地址表示) 1.系统描述 1.1设计目的 通过设计、编制、调试一个DO-WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。 1.2设计内容及步骤 对循环语句:DO〈赋值语句〉WHILE 〈表达式〉 按给定的题目写出符合自身语法分析方法要求的文法和属性文法描述。 (1)按给定的题目给出语法分析方法的思想及分析表设计。 (2)按给定的题目给出中间代码序列的结构设计。 (3)完成相应的词法分析、语法分析和语义分析程序设计。 (4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 2文法的描述 本程序所用的文法如下: G[S]: (1)S->do{E;}while(B) {if B.true goto B.true else goto B.false;} (2)B->I1 rop I2 {B.type=bool;B.val=I1.val rop I2.val;} (3)E->I1=I2 op I3 {I1.val=I2.val op I3.val;} (4)I->id {I.val=id.val;} 注意:rop is < or >,op is +,-,*,/, id is any number or identifier 由上可知,非终结符B表示布尔表达式,E表示赋值表达式 3.语法分析方法描述及语法分析表设计 3.1语法分析方法描述 本实验采用LR分析方法对DO-WHILE语句进行语法分析。LR分析法是一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K>=0)符号就能惟一的确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能惟一的确定句柄。LR分析法的归约过程是规范推导的逆过程,所以LR分析过程是一种规范过程。 一个LR分析器由3个部分组成: 总控程序,也可以称为驱动程序。对所有的LR分析器,总控程序是相同的。 分析表或分析函数。不同的方法分析表将不同,同一个方法采用的LR分析器不同时,分析表也不同,分析表表又可以分为动作(ACTION)表和状态转换(GOTO)表两个部分,它们都可以用二维数组表示。 分析栈,包括文法符号栈和相应的状态栈。它们均是先进后出栈。

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节课开始到实验室进行上机验收。

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个输入值的

编译原理报告for循环语句的翻译程序

学号:0120810680326 课程设计 题目f or循环语句的翻译程序 学院计算机学院 专业软件工程 班级0803 姓名徐泽前 指导教师何九周 2011 年 6 月日

目录 1设计目的 (4) 2设计环境与工具 (4) 3设计任务要求与说明 (4) 4设计时间 (4) 5设计地点 (4) 6系统描述 (4) 7文法及属性文法的描述 (5) 7.1文法描述 (5) 7.1.1 FOR语句相关的产生式: (5) 7.1.2 布尔表达式: (5) 7.1.3 赋值表达式: (5) 7.2属性文法的描述 (5) 8 语法分析方法描述及语法分析表设计 (7) 8.1语法分析方法描述 (7) 8.2系统中使用的action和goto表(见附录1) (9) 9 给出中间代码形式的描述及中间代码序列的结构设计 (9) 10简要的分析与概要设计 (10) 11 详细的算法描述 (11) 11.1词法分析的数据结构设计与详细的流程图 (11) 11.2词法分析流程图 (11) 11.3语法制导翻译的数据结构与详细的设计图 (12) 11.3.1数据结构的设计 (12) 11.3.2算法描述 (13) 11.3.3程序流程图 (13) 12给出软件的测试方法和测试结果 (14) 12.1 FOR循环语句的测试 (14) 12.2词法分析出错处理 (15) 12.3语法分析出错处理 (16) 13收获与体会 (16) 14 参考文献 (17)

课程设计任务书 学生姓名:徐泽前专业班级:软件0803班 指导教师:何九周工作单位:计算机学院 题目: for循环语句的翻译程序 初始条件: 程序设计语言:主要使用C语言的开发工具,或者采用LEX、YACC等工具,也可利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,说明书撰写等具体要求) 1.明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会 设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。 2.主要功能包括:利用算符优先分析方法和思想对某些语句进行语法分析与语义分析,生成相 应的中间代码。正确运用语法规则,并能应用所学的方法解决存在的问题。语法分析方法及中间代码形式的描述、文法和属性文法的设计。 2.进行总体设计,详细设计:包括算法的设计和数据结构设计。系统实施、调试,合理使用出错 处理程序。 3.设计报告:要求层次清楚、整洁规范、不得相互抄袭。正文字数不少于0.3万字。包含内容: ①课程设计的题目。 ②目录。 ③正文:包括引言、需求分析、总体设计及开发工具的选择,设计原则(给出语法分析方法及中间代码形式的描述、文法和属性文法的设计),数据结构与模块说明(功能与流程图)、详细的算法设计、软件调试、软件的测试方法和结果、有关技术的讨论、收获与体会等。 ④结束语。 ⑤参考文献。 ⑥附录:软件清单(或者附盘)。 时间安排: 消化资料、系统调查、形式描述1天 系统分析、总体设计、实施计划3天 撰写课程设计报告书1天 指导教师签名: 2010年 6月 11日 系主任(或责任教师)签名: 2010年 6月 11日

文言文经典句子翻译

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

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

《For循环语句》

《F o r循环语句》教学设计 池州市第八中学杜亦麟 课题 2.4.1 For循环语句 教学内容 粤教版信息技术(选修1)《算法与程序设计》第二章《程序设计基础》第四节《程序的循环结构》第一小节《For循环语句》 教学目标 知识与能力: 1.理解循环结构的基本思想及For语句的执行过程。 2.培养和提高学生逻辑思维能力,使其可以独立完成简单循环结构算法的设计。 3.能够利用For循环语句实现循环结构,解决实际问题。 过程与方法: 1.通过简单的数学问题的分析、讲解,让学生掌握For循环语句语法知识,及其执行原理。 2.以任务驱动,学生分组合作探究的方式,进一步让学生理解For循环语句的基本思想,同时培养学生自主探究和合作学习的能力。 3.通过自评和互评活动,培养学生语言表达能力和归纳总结能力。 情感态度与价值观: 1.提高学生学习兴趣,培养学习的主动性和探究性。 2.培养学生团结协作精神,体验成功的快乐。 教学重点 1.掌握For循环语句的格式和功能; 2.理解For循环语句的执行过程。 教学难点 控制循环的条件、确定循环体的内容 教材分析 第二章是程序设计基础,也是全书的基础。它沿着分析问题、设计算法、编写程序等运用计算机解决问题之路,开始学习如何使用VB程序设计编写程序解决问题。本节课的主要内容For语句的基本格式、执行过程及语句的实际应用。又是本章的重点和难点内容。而循环结构是程序设计的三种基本结构之一,其作用是使一段程序反复执行。For循环语句在程序设计中频繁出现,也是三种结构中较难的一种,因此,学好本节课非常重要,本节课的学习会使学生对算法有一个更深刻的理解,为以后的程序设计打下一个良好的基础,也可以培养学生的创新能力、分析问题和解决问题的能力以及探究精神。

《编译原理》课程设计-DO-WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示)资料

012131087051 学号: 6 课程设计 题目编译原理 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师 2015 年12 月7 日

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

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