精华内容
下载资源
问答
  • 目标是在Turbo Pascal中为WHILE语言编写一个解释器,然后在WHILE本身中编写一个解释器版本。 WI / XWI WI是用于DOS的WHILE语言解释器(XWI是相同的,但已编译为使用扩展的内存)。 已实现以下功能: read X write...
  • do while语句翻译

    2009-06-16 17:55:50
    刚做完的编译原理课程设计,do while语句的翻译,简单优先算法
  • while循环语句翻译

    2010-06-28 12:36:56
    编译课程设计WHILE循环语句的翻译程序设计(简单优先法、输出四元式)
  • 设计一个语法制导翻译器,将WHILE语句翻译成四元式。 要求:先确定一个定义WHILE语句的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。 对用户...
  • while循环语句的翻译程序的c++源程序
  • WHILE条件语句的翻译程序设计(LL(1)法、输出三地址表示)
  • 详细的WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)
  • WHILE循环语句的翻译程序设计,可更改为四元式的程序。要求是 WHILE循环语句的翻译程序设计(LR方法、输出三地址码)
  • DO-WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示),程序可运行出结果
  • csapp200页的一个问题 说是while loop翻译到汇编就变成ifdowhile的形式了 要是不用ifdowhile直接这样写我觉得效率上没什么不同啊 loop: t=test_expr; If(!t) goto done; body_statement goto loop; done:![图片...
  • do-while语句翻译设计

    2010-01-09 22:20:22
    完整代码,实验课程设计好帮手!C++语言,结构清晰易于理解
  • 编译原理 do while 循环语句的翻译。。并且用LL1方法。。三地址输出
  • 编译原理课程设计的答案,while语句的翻译,有详尽的源代码。
  • 设计WHILE循环语句文法,给出该文法的属性文法,用LR分析法实现对WHILE循环语句的翻译,给出翻译的四元式结果。
  • DO-WHILE循环语句的翻译程序设计(LL(1)法 输出三地址表示)报告
  • DO-WHILE循环语句的翻译(递归下降下)
  • do-while循环语句的翻译(递归下降法,输出三地址)
  • 编译原理 for 条件语句,while 语句的翻译及各种地质输出,大家慢慢找
  • while循环翻译陈锡嘏

    2009-06-18 11:30:24
    #include<stdio.h> //预处理(头文件包含) #include #include #include<iostream.h> #define MaxiProgramNumber 888 //源程序最大字符的个数 #define MaxiWordLength 18 //标示符和关键字最长字符的个数 ...
  • 《编译原理》控制流语句 if 和 while 语句的翻译 笔记 if 语句的翻译 描述 if 语句的文法如下: if E then S1 或者 if E then S1 else S2 其中 E 为布尔表达式 S1,S2 本身也可以是 if 语句或者其他语句 while ...

    《编译原理》控制流语句 if 和 while 语句的翻译 - 例题解析

    将 if 和 while 语句翻译成四元式

    注:不同教材会有小差异,使用 _ 或者 — ,如果是 —,请注意区分 — 和 - 减号

    (一)四元式

    四元式是普遍采用的一种中间代码形式,由于它便于优化处理,所以目前在很多编译程序中得到广泛应用。

    形式表示
    一般形式(op ,arg1 ,arg2 ,result)
    一目运算(op ,arg1 ,____ ,result)
    0元运算(op ,____ ,____,result)

    如:a:= -b+c*d的四元式为:

    (:= 表示赋值,用于区分 =)

    (1) ( - , b , __ , T1 )
    (2) ( * , c , d , T2 )
    (3) ( + , T1 , T2 , T3 )
    (4) ( := , T3 , __ , a )

    T1 := -b
    T2 := c * d
    T3 := T1 + T2
    a : = T3

    四元式的最大优点:

    在实现代码优化时,通常需要从现有的运算序列删去某些运算,或者需要挪动一些运算的位置,这对于四元式序列来说,是比较容易实现的。

    因为四元式之间的联系是通过临时变量来实现的,所以更改其中一些四元式给整个序列带来的影响较小

    (二)if 语句的翻译

    描述 if 语句的文法如下:

    if E then S1

    或者

    if E then S1 else S2

    其中 E 为布尔表达式
    S1,S2 本身也可以是 if 语句或者其他语句

    控制语句中的回填技术

    一些转移地址并不能不产生这些四元式的同时得知。

    也就是说,一个布尔式的真假出口往往不能在产生四元式的同时就确定。
    因此,要回填这些地址

    拉链

    为了记录需回填地址的四元式,采用 “拉链” 的方法。

    把需回填 E.true 的四元式拉成一链,把需回填 E.false 的四元式拉成一链,分别称做“真”链和“假”链

    IF 语句翻译过程

    IF 语句翻译过程大致如下:

    (1) 翻译 E,获得一组四元式;
    (2) 扫描 E 的真出口,回填;
    假出口尚不知;
    (3) 翻译 S(1) ;
    (4) 遇到 else,S(1) 结束,生成一条无条件转移四元式,但出口不明;
    (5) 翻译 S(2) ,结束。

    if 语句的翻译例题:

    对下语句进行翻译:

    if A > B or C then
       if D<E then F:=F+1
       else F:=F-1
    else F:=0;
    

    四元式从 100 开始编号:

    100 ( j> , A , B , 104 )
    101 ( j , _ , _ , 102 )
    102 ( jnz, C , _ , 104 )
    103 ( j , _ , _ , 112 )
    104 ( j< , D , E , 106 )
    105 ( j , _ , _ , 109 )
    106 ( + , F , 1 , T1 )
    107 ( := , T1 , _ , F )
    108 ( j , _ , _ , 113 )
    109 ( - , F , 1 , T2 )
    110 ( := , T2 , _ , F)
    111 ( j , _ , _ , 113 )
    112 ( := , 0 , _ , F )
    113 …

    解释:

    (1)第 100 号 ( j> , A , B , 104 ) ,表式示如果满足 A > B,此时四元式第四个表示结果的是 104,就表示跳转到 104 号执行,是一个真出口;如果不满足就会继续走到下个序号的四元式 101 号。
    (2)第 101 号 ( j , _ , _ , 102 ),表示直接到 102。虽然没有这一句也能到达 102,但是它表表示上面不满足的状态,也叫假出口,必须要写。
    (3)所以写条件要一写一对,因为不满足就走到下一个序号的四元式,并且假出口只能在它相邻的下面。
    (4)第 102 号 ( jnz, C , _ , 104 ),只有一个参数,操作符时 jnz,然后同样是满足则到 104,不满足走到下一个序号的四元式。
    (5)第 106 号 ( + , F , 1 , T1 ),T1 是 F + 1 的结果,此时不表示跳转,不跳转也就是走到下个序号的四元式。
    (6)注意赋值语句的表示,第 107 号 ( := , T1 , _ , F ),是将被赋值的元素放在结果的位置上,就是四元式第四个位置。

    (三)while 语句的翻译

    while 语句的翻译过程

    while 语句的翻译过程大致如下:
    (1) 翻译 E,待填 E 的真链、假链;
    (2) 扫描 do 后,回填 E 的真链;
    (3) 翻译 S 语句称代码段;
    (4) 无条件转移到 E 代码段的第一条四元式,若 S 有语句链,也应转到 E 代码段的第一条四元式。

    while 语句的翻译例题

    对下语句进行翻译:

    While (a<b) do
    { a=a+3;
      b=b-3;    
    }
    

    四元式从 100 开始编号:

    101 (j<, a, b, 103) 真出口
    102 (j, _, _, 108) 假出口
    103 (+, a, 3, T1)
    104 (:=, T1, _, a)
    105 (-, b, 3, T2)
    106 (:=, T2, _, b)
    107 (j, _, _, 101)
    108 …

    解释:

    (1)原理同上
    (2)注意赋值语句的表示,例如第 104 号 (:=, T1, _, a),是将被赋值的元素放在结果的位置上,就是四元式第四个位置。

    展开全文
  • 采用递归下降法实现while 循环语句的翻译设计。 例如:while x;y=y+2} 翻译输出三地址代码。
  • 编译原理课程设计,while循环语句的翻译程序设计课程报告
  • while循环语句的翻译程序设计(简单优先 三地址)很强大的程序
  • (编译原理课程设计)WHILE循环语句的翻译程序设计
  • 编译原理的课程设计,各类语句的翻译,各类地质输出
  • 编译原理课程设计--WHILE循环语句的翻译程序设计程序代码
  • 输入一个DO-WHILE的语句,进行词法分析,词法分析器利用超前搜索,状态转换等方法,将源程序转化成为一个一个的单词符号二元式,如果词法分析无误,则进入语法分析部分,使用简单优先法进行文法分析,为每个终极符与非终极符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,132
精华内容 63,652
关键字:

while怎么翻译