标签:
1.词法分析的功能
词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。[1] 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。从左至右地对源程序进行扫描,按照语言的词法规则识别各类单词,并产生相应单词的属性字。
a | b {a, b}
(a | b) (a | b ) {aa, ab, ba, bb}
aa | ab | ba | bb {aa, ab, ba, bb}
a* 由字母a构成的所有串集
(a | b)* 由a和b构成的所有串集
比如如下的代码段:
while(i>=j) i--
2.符号与种别码对照表
3.用文法描述词法规则
#include<iostream.h> #define MAX 100 typedef struct { int n; int data[MAX]; }lqlist; void merge(int a[],int s1,int e1,int s2,int e2,int b[]) { int k=s1; int i=s1; while((s1<=e1)&&(s2<=e2)) { if(a[s1]<=a[s2]) { /*将数组a[s1]和数组a[s2]中小的数据暂存到数组b[]中*/ b[k]=a[s1]; k++; s1++; } else { /*将数组a[s1]和数组a[s2]中小的数据暂存到数组b[]中*/ b[k]=a[s2]; k++; s2++; } } while(s1<=e1) { /*将第一个数组中剩余的数据暂存到数组b[]中*/ b[k]=a[s1]; k++; s1++; } while(s2<=e2) { /*将第二个数组中剩余的数据暂存到数组b[]中*/ b[k]=a[s2]; k++; s2++; } k--; while(k>=i) { /*将暂存数组b[]中的数据存回到a[]中*/ a[k]=b[k]; k--; } } main() { cout<<"****************************************************"<<endl; cout<<" 归并排序的递归和非递归实现 "<<endl; cout<<"****************************************************"<<endl; lqlist p; int i=0,z,m,k; cout<<" 请输入所要比较的数字组,以10000结束: "<<endl; cin>>z; while(z!=100000&&i<MAX) { /*对数组进行循环输入,并以10000结束输入*/ p.data[i]=z; i++; cin>>z; } p.n=i; cout<<"排序前的数组是: "<<endl; for(i=0;i<p.n;i++) cout<<p.data[i]<<" "; cout<<"请选择需要归并排序的方法"<<endl; <<"1.选择递归方法。"<<endl; cout<<"2.选择非递归方法。"<<endl; cin>>m; if(m==1) M(&p); else { if(m==2) mergesort2(&P); else cout<<"输入有误。"<<endl;) } cout<<endl<<"排序后的数组: "<<endl; for(i=0;i<p.n;I++) { /*输出归并前的数组*/ cout<<p.data[i]<<" "; } cout<<endl; cout<<"请选择服务:"<<endl; if(m==1) cout<<"1.选择非递归方法。"<<endl; else cout<<"1.选择递归方法。"<<endl; cout<<2.退出。"<<endl; cin>>k; /*再次进行选择服务(另一种排序方法还是退出)*/ if(m==1&&k==1) M(&p); /* 将用递归方法进行归并排序*/ else { if(m==2&&k==1) mergesort2(&p); /*将用非递归的方法进行归并*/ else if(k==2) return 0; } cout<<endl<<"排序后的数组: "<<endl; for(i=0;i<p.n;i++) { cout<<p.data[i]<<" "; } cout<<endl; return 0; }
标签:
原文地址:http://www.cnblogs.com/jm2426330020/p/5923853.html