求助 给个思路也行 谢啦!
背景编译程序将高级语言(如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);