编译原理课程设计心得体会

时间:2024.5.4

编译原理课程设计心得体会

经过一个星期的编译原理课程设计,本人在刘贞老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。

一、对实验原理有更深的理解

通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

二、对该理论在实践中的应用有深刻的理解

通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。

三、激发了学习的积极性

通过该课程设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操

作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。

四、理解了该知识点以及学科之间的融合渗透

本次课程设计程序部分是用c语言编写的,把《计算机操作系统》,《编译原理》,《算法分析与设计》《c语言》四门学科联系起来,把各个学科之间的知识融合起来,把各门课程的知识联系起来,对计算机整体的认识更加深刻。使我加深了对《计算机操作系统》,《编译原理》,《算法分析与设计》《c语言》四门课程的认识。


第二篇:编译原理课程设计课设报告


1. 课程设计题目名称:语法高亮转换软件

2. 课程设计任务目的与任务 目 的: ·通过此次课程设计更深一步了解此法分析

·培养解决工程问题的能力,例如方案的制定

·了解设计和实现一个实际高级语言编译器所面临的各种问题及其复杂程度。 主要任务: 输入:cpp源代码文件,后缀为.cpp的文件;输出:网页文件,后缀为.html

文件;实现功能:将cpp源代码转换成网页文件,在浏览器中打开网页文件时,

网页中显示C++源代码并以高亮语法表示显示。

3. 设计思想和实现方法

设计思想:词法分析程序完成从输入文件中读取字符形式的高级语言源程序,并把输入

转化为一个由单词符号组成的流。构造词法分析器的一种简单办法是用状态

转化图来描述源语言词法记号流,然后手工把这种状态转换图翻译成为识别

记号的程序。用这种方法可以产生高效的词法分析器。

实现方法:用C++语言编写一个词法分析器,使之能识别输入串,并把分析结果(单词符号,

标识符,关键字等等)输出.输入源程序,输入单词符号,本词法分析器可以辨别

关键字,标识符,常数,运算符号和某些界符,运用了文件读入来获取源程序代

码,再对该源程序代码进行词法分析,这就是词法分析器的基本功能.当词法分

析器调用预处理子程序处理出一串输入字符放进扫描缓冲区之后,分析器就

从此缓冲区中逐一识别单词符号.当缓冲区里的字符串被处理完之后,它又调

用预处理子程序来处理新串.

4. 程序说明:

程序一开始要求读入一个代码文件,接着把读入的源程序打印出来.然后进行词法分析,程序定义两个数组keyword[60]和cha[31],前者用来存放关键字,后者用来存放中断字符。从文件中读入字符,与cha[31]中的中断字符相比较。判断读入的是否为中断字符,如果不是继续读入字符;如果是中断字符,将前面读入的字符放入到一个字符串当中,

将此字符串与keyword[60]中存放的关键字比较,如是关键字则做相应处理即着色;如果不是关键字不作处理。

程序流程图:

5. 程序运行结果

example.cpp文件中的内容:// example.cpp

#include <iostream>

#define pi 3.1415

using namespace std;

int main()

{

int n = 0;

float a = 12.34;

char ch = 'a';

cout << "hello C++ ";

for (int i = 0; i < 10; i++) a = n + ch;

}

编译原理课程设计课设报告

return 0;

运行程序 :

查看wyl.html中的显示内容:

6. 测试报告:

为了更好的检查程序最终输出是否正确,可以用记事本打开wyl.html查看代码。

wyl.html代码如下:

编译原理课程设计课设报告

编译原理课程设计课设报告

7. 存在问题及分析:

刚开始编写程序时,编写程序不知道如何从一个文件中读入字符,如何将一个字符串直接输出到文件当中。这主要是对C++语言中的一些函数不了解造成的。

在设计如何过滤中断字符和判断是否为关键字时,出现了迷茫,不知道该如何操作。这主要是算法不成熟导致的,没有正确的算法就不可能设计出正确的。要想设计出一个好的程序首先要有一个好的思想然后将这个思想转化为正确的算法,根据算法编写程序。

编译原理课程设计课设报告

虽然最终程序写出来了也完成了课程设计的要求,但是编写的程序还是存在一些不足。首先,程序并没有把C++中所有的关键子都添加进去,只是添加了一些最常用的。其次,由于自己编程能力有限所编的程序执行效率有点低。

8. 总结及体会:

经过一个星期的编译原理课程设计,本人在单老师的指导下,顺利完成该课程设计.通过该课程设计,收获颇多。

一、 对实验原理有更深的理解

通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程,对课本上的知识有了更深的理解,课本上的知识是机械的,表面的.通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解.

二、对该理论在实践中的应用有深刻的理解

通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的, 对该理论在实践中的应用有深刻的理解 .

三、激发了学习的积极性

通过该课程设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法.把死板的课本知识变得生动有趣,激发了学习的积极性.把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解.以前认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了知识的运用,对计算机编译原理的认识更加深刻.课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意命令的正确性.,培养实践动手能力和程序开发能力.

四、理解了该知识点以及学科之间的融合渗透

本次课程设计程序部分是用C++语言编写的,把《编译原理》,《算法分析与设计》《C语言》三门学科联系起来,把各个学科之间的知识融合起来 ,把各门课程的知识联系起来,对计算机整体的认识更加深刻.使我加深了对《编译原理》,《算法分析与设计》《C++语言》三门课程的认识.

参考文献

[1] 陈意云 张昱,《编译原理》,高等教育出版社

[2] 王雷 刘志成 周晶,《编译原理课程设计》,机械工业出版社

[3] Internet网络相关资源

附录:源代码

/*cpp完成将wyl文件里的.cpp文本转换成wyl.html文件 并可以识别出关键字并用高亮表示*/

//头文件

#include<iostream>

#include<fstream>

#include<string>

using namespace std;

//关键词表

string keyword[60]={ "auto","bool","break","case","catch","char","class",

"const","const_cast","continue","default","delete","do",

"double","dynamic_cast","else","enum","explicit","extern","false","float","for", "friend","goto","#include","if","inline","int",

"long","mutable","namespace","new","operator", "private", "protected","public","register", "return","short", "signed","sizeof","static","static_cast","struct","switch","template", "this","true","try","typedef","typeid","typename","union","unsigned", "using","virtual","void","volatile","while","_asm",};

cha[31]={' //中断字符表 char

','\t','\n','{','}',',','.','[',']','*','\\','/','?','<','>',';',':','^','%','@','!','~','`','(',')','+','-','|','=','\'','\"'};

ifstream fin("wyl.cpp");

ofstream fout("wyl.html");

void main()

{ /*主函数*/

fout<<"<html>"<<endl; fout<<"<body>"<<endl; int num=60; //查找是否为关键字的函数 如果是 则高亮表示 void searchword(string word); //判断读入字符是否为中断字符 bool ismark(char); //处理中断字符 void mark(char);

char m;

while(!fin.eof())

{ /*读入文件的字符并处理*/ m=fin.get(); string n; while(!ismark(m)&&!fin.eof())

{/*如果不是中断字并且不是全文结束符,则继续读入下一个次,并将之前读入的字符全部存入字符串a中*/

} if(ismark(m)) {/*如果是中断字,则判断字符串a是否为关键字,并处理关键字*/ searchword(n); mark(m); n=n+m; m=fin.get();

} if(fin.eof())break; } fout<<"</body>"<<endl; fout<<"</html>"; fin.close(); fout.close();

}

void searchword(string word)

{/*查找关键字并输出*/

} int flag=0; for(int i=0;i<50;i++) { } if(keyword[i]==word.data()) { flag=1; } fout<<"<font color=\"blue\">"<<word.data()<<"</font>"; break; if(flag==0) fout<<word.data();

bool ismark(char ch)

{/*判断中断符*/

for(int i=0;i<31;i++)

} { if(ch==cha[i])return 1; } return 0;

void mark(char ch) {/*处理中断符*/

char m; string a; a=ch; string b; int n=0; void search_end(int); switch(ch) { case '\n':fout<<"<br>";n=0;break; case '\t':fout<<"&nbsp;&nbsp;&nbsp;&nbsp;";n=0;break; //一个制表符等于4个空格 case '<':fout<<"<";n=0;break; case '>':fout<<">";n=0;break; case ' ':fout<<"&nbsp;";n=0;break; case '\'': {/*当读入字符为 ' 时,查找匹配的下一个'并输出之间的字符*/ } m=fin.get(); while(m!='\n'&&m!='\'') { switch(m) { case '<':b="<";break; case '>':b=">";break; case ' ':b="&nbsp;";break; case '\t':b="&nbsp;&nbsp;&nbsp;&nbsp;";break; default:b=m;break; } a=a+b; m=fin.get(); } if(m=='\n') fout<<a.data()<<"<br>"; else fout<<a.data()<<'\''; break; case '\"': {/*查找匹配的"并输出字符串*/ m=fin.get(); while(m!='\n'&&m!='\"') { switch(m) { case '<':b="<";break;

} } case '>':b=">";break; case ' ':b="&nbsp;";break; case '\t':b="&nbsp;&nbsp;&nbsp;&nbsp;";break; case '\\':b='\\';m=fin.get();b=b+m;break; default:b=m;break; } a=a+b; m=fin.get(); if(m=='\n') fout<<"<font color=\"ff00ff\">"<<a.data()<<"<br>"<<"</font>"; else fout<<"<font color=\"ff00ff\">"<<a.data()<<'\"'<<"</font>"; break;

case '/':

{/*判断是否为注释,如果是,则调用处理注释函数,如果不是,则当做一般字符处理*/

}

m=fin.get(); if(m=='/')search_end(0); else if(m=='*')search_end(1); else fout<<'/'<<m; break; } case '\\': { } m=fin.get(); fout<<'\\'<<m; break; default:fout<<ch;break; } void search_end(int flag) {/*读入注释并输出的函数*/ string a; string b; char m; int n=0; int t=0; if(flag==0) { m=fin.get(); while(m!='\n')

} } else { } { } switch(m) { case '<':b="<";break; case '>':b=">";break; case ' ':b="&nbsp;";break; case '\t':b="&nbsp;&nbsp;&nbsp;&nbsp;";break; default:b=m;break; } a=a+b; m=fin.get(); fout<<"<font color=\"green\">"<<"//"<<a.data()<<"</font>"<<"<br>"; while(n==0||t==0) { m=fin.get(); } fout<<"<font color=\"green\">"<<"/*"<<a.data()<<"</font>"; switch(m) { case '<':b="<";n=0;break; case '>':b=">";n=0;break; case ' ':b="&nbsp;";n=0;break; case '\t':b="&nbsp;&nbsp;&nbsp;&nbsp;";n=0;break; case '\n':b="<br>";break; case '*': n=1;b=m; break; case '/': { if(n==1) t=1; else n=0; b=m;break; } default:b=m;n=0;break; } a=a+b;

编译原理课程设计课设报告

更多相关推荐:
财务会计课程设计难点汇总及心得体会

经过三周的艰苦奋斗,财务会计课程设计这门大实验终于告一段落,虽然课程设计的过程很艰辛,但是也收获了不少。在课程设计的过程中,首先,我们知道了如何将自己所学的会计知识融会贯通于实际操作中,锻炼了自身的能力;其次,…

会计课程设计心得

会计课程设计心得有一种“东西”一去不复返,不因人的主观意念而改变。她既给我们留下了美好,留下了期待,也留下了记忆的伤痕,金钱没了可以赚回来,但这个所谓的“东西”是用金钱买不到的,那就是我们每时每刻都在享用的时间…

会计学课程设计总结

xx大学《会计学》实习总结20xx-20xx学年第一学期系别专业班级学生姓名指导教师成绩评定一、实习目的会计学模拟实习是《会计学》的课内实习。主要目的是通过手工模拟实习,使学生能够系统、全面地掌握企业会计核算的…

课程设计心得(会计实训)

课程设计报告10921610325郑皓月本学期在夏季的第三学期,进行了课程设计“财务会计综合实验”实训。财务会计综合实验目的在于提高实际应用水平。在培训过程中,通过做分录,填制凭证到制作账本来巩固技能。通过财务…

基础会计培训心得体会

《基础会计》在线培训心得体会为了学习优秀教师先进的教学方法和教学理念,提高我院教师的教学水平,在学院和系部的安排下,我于20xx年x月~20xx年x月,历时两个月的时间,在教师发展在线接受网络培训,学习了沃健…

工程成本会计课程设计心得

工程成本会计课程设计心得体会学习工程成成本会计已近一学期,在这半年的学习中,不仅对成本会计有了比较系统和科学的认识,并且学到实用的技巧去处理相关方面的问题。本学期的主要学习内容是学习有关工程成本会计的知识,对会…

会计学习心得体会

一、通过基础会计的学习,使我进一步体会到了会计在经济生活中的重要作用。会计工作是经济管理的重要组成部分,在经济发展中发挥着基础作用。建立和实施会计制度规范了单位的会计核算,提供了真实完整会计信息,规范有序的会计…

会计课程设计

一模拟实训目的会计综合课程设计是会计学专业的学生必修集中实践的课程之一为了提高我们的会计实务操作水平培养会计业务综合处理能力因此在本学期末安排了为期一个月的会计综合课程设计此次实训突出了综合性完整性超前性和系统...

会计专业网络课程设计

会计专业网络课程设计提要会计网络课程作为高校质量改革的重点部分在高职教学质量改革中扮演着很重要的角色对会计专业网络课程进行教学分析和系统设计将网络课程教学与传统学科课程教学有机结合使它们在新的水平上结合成一个整...

基于课程标准的教学设计思路(学习心得)

基于课程标准的教学设计思路学习基于标准的教学相关书籍的体会广汉市研培中心蒋玉国前言课程标准是对学生经过某一学段之后的学习结果的行为描述澳大利亚维多利亚州课程标准框架中指出课程标准描述的是学生学习所包括的主要领域...

学习多媒体演示文稿的设计与制作心得体会

学习多媒体演示文稿的设计与制作心得体会王村镇墩台小学李瑞婷从20xx年1月4日开始我参加全国中小学教师信息技术应用能力工程的培训跟西北师大赵健教授学习了多媒体演示文稿设计与制作出高级培训由衷感谢领导为我们搭建了...

微课程设计与应用学习心得体会

微课程设计与应用学习心得体会微课教学改革中的新产物以前我觉得微课由于时间太短学生学不了什么通过这些天网上课程学习使我受益匪浅其中对微课程设计与应用这一课程的学习感触很深通过多次的学习使我对微课程设计与应用有了更...

会计课程设计心得体会(23篇)