PL0编译程序
- 格式:pdf
- 大小:1.89 MB
- 文档页数:141


(原创)亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试
Qt程序,QtC。。。
下载源代码,注意⼀定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-
opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的。只有⽤源码包才能做真正的纯静态编译,如果⽤Qt官⽹已
编译的标准库.exe⽂件进⾏编译,有可能出现各种错误,⽽且编译后的⽂件巨⼤,我当时就在这⾥绕了很⼤的弯⼦,请童鞋们注意啦!!可
能有些⽼鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上⽹查资料看博客,⼀定要注意博⽂的⽂字细节,有时候差⼏个字就能让你费很⼤
的劲,四处碰壁。
⾸先解压源码包到你想要保存编译的位置,注意⽂件⽬录⼀定不能包含中⽂和空格!
由于Qt4.8在VS环境下的⼀些问题,为了避免编译中途出现,我总结了3个地⽅需要修改。(1) 删除源码包中bin⽬录下的syncqt和syncqt.dat⽂件,如你不放⼼可将其改名或剪切到别的位置。如不修改将发⽣ Perl not found in
environment - cannot run syncqt 错误。(2) 修改\mkspecs\win32-msvc2010下的qmake.conf⽂件,将其中的
QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
注意末尾的”-“号区别。如不修改将来如有项⽬使⽤wchar_t,qt却编译成wchar_t-,编译会导致连接错误,提⽰找不到Qwstring;QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG这3处后⾯的MD,MDd
PL/0实验报告
课程名称 编译原理
题目名称 PL/0编译程序
学生学院 计算机科学与技术学院
专业班级
学 号
学生姓名
班内序号
2 山东理工大学实验报告纸 第 1 页
姓名:蔡鹏飞 计算机 院_11_级02班同组者 成 绩_________
室温: 气压: 课程名称: 编译原理 教师签字
实验项目
编号( 1 ) PL/0编译程序的分析 指导教师 鞠传香
实 验 目 的 1.熟悉pl/0语言并能编写小程序
2.掌握pl/0编译程序的编译过程(词法分析、语法分析、语义分析等)
实验仪器(编号)材料、工具 PC机、VC++6.0
(原理概述)
pl/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。词法分析和代码生成作为独立的子程序供语法分析程序调用。语法分析的同时,提供了出错报告和出错恢复的功能。在源程序没有错误编译通过的情况下,调用类pcode解释程序解释执行生成的类pcode代码。
3
4
PL/0语言文法的EBNF表示
EBNF表示的符号说明。
〈 〉:用左右尖括号括起来的中文字表示语法构造成分,或称语法单位,为非终结符。
∷= :该符号的左部由右部定义,可读作'定义为'。
| :表示'或',为左部可由多个右部定义。
{ } :花括号表示其内的语法成分可以重复。在不加上下界时可重复0到任意次数, 5 有上下界时为可重复次数的限制。
如:{*}表示*重复任意次,{*}38表示*重复3-8次。
[ ] :方括号表示其内的成分为任选项。
( ) :表示圆括号内的成分优先。
例:用EBNF描述文法的定义 :
. .. .
. .资料. .. VC++6.0中如何编译运行调试C语言程序
1.启动VC++6.0 (如下图)
2.单个源文件的编译运行
例如下面的源代码
#include
void main()
{ int i,sum=0;
for(i=1;i<=10;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
.
.. .
. .资料. .. 打开VC++6.0,如图1所示
(图1)
选择“文件”→“新建”,打开如图2所示
(图2)
.
.. .
. .资料. .. 选择“文件”项,如图3所示
(图3)
选择“C++ Source File”项,并在“文件名”项目下输入“sum.c”如图4所示
编写PL/0语言的词法分析程序
要求:
1、读入用PL/0语言编写的源程序,正确的进行词法分析,并输出二元式序列。
2、若源程序有词法错误,能够给出出错的准确位置。
3、词法代号如下
(+,+);
(-,-);
(*,*);
(/,/);
((,();
(),));
(,,,);
(;,;);
(.,.);
(#,#);
(=,=);
(>,>);
(<,<);
(:=,a);
(>=,b);
(<=,c);
(数字,d);
(标识符,e);
关键字代号:
(begin,f);
(call,g);
(const,h);
(do,i);
(end,j);
(if,k);
(odd,l);
(procedure,m);
(read,n);
(then,o);
(var,p);
(while,q);
(write,r);
4、等于运算符号为一个 =
测试程序:
A.C ======================
CONST A=10;
VAR B,C;
PROCEDURE P;
VAR D;
PROCEDURE Q;
VAR X;
BEGIN
READ(X);
D:=X;
WHILE X<0
DO CALL P;
END;
BEGIN
WRITE(D);
CALL Q;
END;
BEGIN
CALL P;
END.
*/
/*program name:chifufenxi*/
/*作者:小万 qq:421404493*/
/*date:2004.10.11*/
#include
#include
#include
#include
#include
#define N 256//每一行的字符数不能超过256个