主题:求助,语法分析问题!!
由于项目时间紧迫,这个项目牵扯到小弟的毕业问题,请大家务必帮帮忙,这两天我也在猛看yacc,希望大家能给我点帮助,题目如下:
1.利用语法产生工具Yacc(结合C或C++语言在windows平台),实现指令ADD的语法分析(假定此法分析器已经提供);
2.输出正确指令的编号,或输出出错信息;
3.指令ADD的语法格式如下:
句型:
(1) ADD rd, rs, rt
(2) ADD dst, *+ARm(disp1), *+ARn(disp2)
(3) ADD dst, ARm(IR0), rt
(4) ADD dst, *+ARm(disp), Imm
(5) ADD dst, rs, Arm(IR0)
(6) ADD dst, rs, *+ARm(disp)
(7) ADD dst, ARm(IR0), ARn(IR1)
注:rs:寄存器 (通用寄存器r0~r31)
rt: 寄存器 (通用寄存器r0~r31)
rd: 寄存器 (通用寄存器r0~r31)
dst: 寄存器 (通用寄存器r0~r7)
ARm: 间接寻址 (辅助寄存器r0~r7)
ARn: 间接寻址 (辅助寄存器r0~r7)
IR0: r24
IR1: r24
disp,disp1,disp2:偏移量
Imm: 立即数
以上就是这道问题,测试数据就是输入如ADD r2, r12, r29,给出结果1,ADD r3, *+ARm(2), *+ARn(3) 得到的结果是2,如果输入错误,要给出错误信息,并输出在第几个编号出错。希望大家给于帮助
1.利用语法产生工具Yacc(结合C或C++语言在windows平台),实现指令ADD的语法分析(假定此法分析器已经提供);
2.输出正确指令的编号,或输出出错信息;
3.指令ADD的语法格式如下:
句型:
(1) ADD rd, rs, rt
(2) ADD dst, *+ARm(disp1), *+ARn(disp2)
(3) ADD dst, ARm(IR0), rt
(4) ADD dst, *+ARm(disp), Imm
(5) ADD dst, rs, Arm(IR0)
(6) ADD dst, rs, *+ARm(disp)
(7) ADD dst, ARm(IR0), ARn(IR1)
注:rs:寄存器 (通用寄存器r0~r31)
rt: 寄存器 (通用寄存器r0~r31)
rd: 寄存器 (通用寄存器r0~r31)
dst: 寄存器 (通用寄存器r0~r7)
ARm: 间接寻址 (辅助寄存器r0~r7)
ARn: 间接寻址 (辅助寄存器r0~r7)
IR0: r24
IR1: r24
disp,disp1,disp2:偏移量
Imm: 立即数
以上就是这道问题,测试数据就是输入如ADD r2, r12, r29,给出结果1,ADD r3, *+ARm(2), *+ARn(3) 得到的结果是2,如果输入错误,要给出错误信息,并输出在第几个编号出错。希望大家给于帮助