lk880307 发表于 2008-7-14 16:43

求助 给个思路也行 谢啦!

背景
      编译程序将高级语言(如C++语言)“翻译”成计算机可以识别并执行的低级语言(如汇编语言),进而在计算机上执行。
目标
      设计一个简单的编译程序,将某种高级程序设计语言L用C语言进行编译并执行,即将L语言中的语句“翻译”成为C语言语句之后在C语言运行环境中执行得到结果。
L语言如下规定:

标识符
              标志变量或常量的名字,标识符由数字和字母组成,其第一个字母为字母;标识符区分大小写
数据类型
         Integer ,String
运算符

加:ADD(Integer型操作数1,Integer型操作数2),结果为Integer型
      如:Integer n1; n1 = 345;  n1 = ADD(n1, 12);  则 n1 = 357

减:SUB(Integer型操作数1,Integer型操作数2),结果为Integer型
      如:Integer n1; n1 = 345;  n1 = SUB(n1, 12);  则 n1 = 333

并:MERGE(String型操作数1,String型操作数2),结果为String型
      如:String str ;  str = “China”;  str = MERGE(str, “ win”);  则str = “China win”
语句
      语句以“;”结束;L语言的语句有:
定义语句
       格式:数据类型 变量或常量标识符;
        注:Integer类型默认值为0,String类型默认值为“”
       例: Integer stdNum;  String str;
赋值语句
       格式:变量 = 数值或表达式;  
       注:变量必须先定义才能进行赋值等操作;
      例:stdNum = 51;str = “China”;
              stdNum = SUB(stdNum, 12);
输出语句
      格式:Out(变量);  输出变量的值
      Out(变量+‘常量’);  原样输出单引号内的内容
      Out( ‘常量’+变量);
      Out(‘常量’+变量+ ‘常量’ );
具体要求
完成一个满足目标功能要求的可以独立运行的程序
程序读入名为03.in的文本文件获取输入数据
程序将处理结果输出到03.out的文本文件中

目标功能
将03.in中的L语句编译为C语言语句并将C语言语句的执行结果输出到03.out中
如果在编译过程中出现不符合L语句规则的错误情况时,将出错原因输出到03.out 中,其后的语句不再进行编译执行
可能出错原因:标识符命名错误;变量未定义;运算数类型不匹配;语句格式错误。

03.in 和 03.out处理示例
        03.in                                03.out
                Out(‘Begin’);                     Begin
                Integer n1;                     12
                n1=12;                             str = ChinaWin
                Out(n1);                              type mismatch
                String str;                       
               str=MERGE(str,"China");       
                str=MERGE(str,"Win");
                Out('str = '+str);
                str=MERGE(str,12);
                Out('str = '+str);

蓝色神话 发表于 2008-7-14 16:54

这是编译原理中的东西,你应该参考编译原理方面的书籍。这不是几句话就能说清楚的!

小样儿 发表于 2008-7-14 17:15

回复 1# lk880307 的帖子

真是巧了,你是ustber的吧,暑期实习?哈哈,哪儿班的

lk880307 发表于 2008-7-14 20:20

回复 3# 小样儿 的帖子

你也是吗?能教教我吗?

水中无月 发表于 2008-7-14 20:33

呵呵,我以前也想过这个问题,但是也是因为没思路而搁浅了……

小样儿 发表于 2008-7-14 22:23

回复 4# lk880307 的帖子

哈哈,我也不会呢,打算放弃啦

页: [1]

编程论坛