Java词法
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
器
Java语言词法分析器的设计与实现
一(实验目的
1(强化对系统软件综合工程实现能力、规划能力的训练; 2(加强对词法分析原理、方法和基本实现技术的理解;
二(实验内容
1(使用DFA实现词法分析器的设计;
2(实现对Java源程序中注释的过滤;
(利用两对半缓冲区从文件中逐一读取单词; 3
4(词法分析结果属性字流存放在独立文件(文件名:scanner_output)中; 5(统计源程序每行单词的个数和整个源文件单词个数;
6(具有报告词法错误和出错位置(源程序行号和该行字符)的功能; 三(说明
1(先读进半个缓冲区的字符,以后前半区的字符读完了,先把后半区的字符读到前半区,再从文件中读入字符到后半区,从而实现两对半缓冲区读单词;每次前半区读完,把前半区的字符存到第一缓冲区,以免在第一个字符时无法回退;还要建立第二缓冲区,存放当要把第一缓冲区的内容放进缓冲区前半区时后半区的内容。
2(因为附录也有设计空格和注释的属性字,所以空格和注释也输出,但空格不算入单词总数
四(源程序主要函数功能
void readin1() //读取字符到缓冲区前半区
void readin2() //把后半区的内容送到前半区
void readin3() //把第二缓冲区的内容送到后半区
char readchar() //从缓冲区中读取一个字符
void untread() //回退一个字符
void writefile() //把属性字流信息写进文件里
void error(char *string) //扫描到错误的单词,string
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示错误的单词已扫描过的字符
void identifier() //扫描标识符
void key() //识别关键字
void number() //扫描数字和点号
void explain(int a) //扫描注释,a表示注释是以 // 开始还是以 /* 开始 void op1(char a),void op2(char a),void op3(char a) ,void op4(char a) //分四类扫描运算符
五(主要数据结构设计
struct stream { //属性字流
char attribute[6];
int site;
};
char buf[31];
char buf1[16]; //第一缓冲区,存放被覆盖的前半区的字符 char buf2[16]; //第二缓冲区,存放被覆盖的后半区的字符 char keyword[50][13]; //关键字表
char words[50][13]; //变量表
char value[50][13]; //变量或常量的值
char note[80][20] = {"//","/*","*/"}; //注释表 char op[50][5]; //运算符表 char strings[50][50] = {"\""}; //存放字符串中单词的表 char inerror[50][50]; //错误单词表
六(FA设计
字母,$,_,数字
$,_*其他0标识符122
不属于关键字的字母,数字,$,_
*字母布尔常量其他布尔常量345关键字
属于关键字的字母
其他*数字*10其他
1112
X,x数字负号L0数字97687整型常量小数除0外的数字数字点,e小数点F1413
小数点,e,实数常量其他数字单引号单引号字母*16171815字符
字母,空格
双引号双引号字符串1920
运算符运算符
==
02122
其他*
23
运算符1++
2425
=
26
*其他
27
--
2829
=
30
其他*
31*=
3233
其他*
34/=
3536
*
其他37%=
3839
其他*
40
&=
04142
&43
*其他
44
^^运算符24546
*其他
47
||
4849
=
50
其他*
51
>=
5253
>>=
545556
=其他
5758
**其他其他
5960<=
6162
<=
6364
**其他其他
6566
?
06767
:
68
!=
6970
*其他
71
[
72
]
73
运算符3
(
74
)
75
.
76
,
77
{
78
}
79
;
80
字母,数\字,\,’
8182