黄山学院词法分析试验1.docVIP

  • 56
  • 0
  • 约7.67千字
  • 约 8页
  • 2018-01-02 发布于河南
  • 举报
黄山学院词法分析试验1

实验题目:词法分析 有C源程序待分析段如下: main() { int sum=0 ,it=1;/* Variable declaration*/ if (sum==1)   it++; else   it=it+2; } 设计其词法分析程序,能识别出所有的关键字、标识符、常数、运算符(包括复合运算符,如++)、界符;能过滤掉源程序中的注释、空格、制表符、换行符;并且能够对一些词法规则的错误进行必要的处理,如:标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。 实验要求: 要给出所分析语言的词法说明,相应的状态转换图,单词的种别编码方案,词法分析程序的主要算法思想等。 实验目的: 1、理解词法分析在编译程序中的作用; 2、掌握词法分析程序的实现方法和技术; 3、加深对有穷自动机模型的理解。 实验报告格式: 一、实验项目 二、实验目的 三、实验原理(含所分析语言的词法说明,相应的状态转换图,单词的种别编码方案,词法分析程序的主要算法思想) 四、实验步骤(含主要模块代码、运行数据记录、实验结果、出错记录等) 五、实验总结(实验小结、心得体会、经验教训等) 源码 #include iostream #includemath.h #includestring #includestdlib.h #includestdio.h #includefstream using namespace std; string key[34]={main, auto,short,int,long,float,double,char,struct ,union,enum,typedef,const,unsigned,signed,extern,register ,static,volatile,void,if,else,switch,case,for ,do,while,goto,continue,break,default,sizeof,return}; string symbol[26]={ =,+,-,*,/,++,--,+=,-=, *=,/=,==,!=,,,=,=,(, ),[,],{,},,,:,; }; char ch; ///存放最新读进的源程序字符 string strToken; ///存放构成单词的字符串 string text=int main()\n{\n int a,b;\n a=10.3211;\n a+=20; if (b==15) break; \n float fa=3.141592653; \n char s=z;\n}; ///要读进的文本 //string text=main(){ int a,b; a=10; b=a+20;}; ///要读进的文本 int pText=0; ///搜索指示器 int line=1; int FindInSymbol(string str) { for(int i=0;i26;i++) { if(str==symbol[i]) return i+37; } return -1; } void GetChar() ///---------1 { ch=text[pText]; pText++; } void GetBC() ///-------2 { while(1) { if(ch== ) GetChar(); else break; } } void Concat() ///----------3 { strToken+=ch; } bool IsLetter() ///---------4 { if( ( ch=a ch=z) ||( ch=A ch=Z) ) return true; return false; } bool IsDigit() ///---------5 { if( ch=0 ch=9) return true; return false; } int Reserve() ///---------6 { for(int i=0;i=33;i++) { if(strTo

文档评论(0)

1亿VIP精品文档

相关文档