一 需求分析
自己编写、调试一个词法分析程序,并对程序输入语句进行词法分析,从而更好的理解词法分析的原理。
二 程序设计
此程序用Java语言编写。程序读入一个内含程序语句的文本文件,对其中的内容进行分析,最终输出形式为<token类型, 识别的单词符号>的Token序列,token类型包括ID,KEYWORD, DIGIT, OPERATOR, ERROR。本词法分析器所分析的语言为C语言的缩减版,可识别C语言的保留字、变量名、操作符、数字等内容,但是不能处理注释、三目操作符(? :)、跳脱符(\)等,且不支持负的数值,引号中内容不可以跨行,所有支持的操作符和关键字将在下面表格中详细给出。
单词符号 | 种别码 | 单词符号 | 种别码 | ||
---|---|---|---|---|---|
int | 1 | + | 25 | ||
unsigned | 2 | - | 26 | ||
short | 3 | * | 27 | ||
char | 4 | / | 28 | ||
long | 5 | & | 29 | ||
float | 6 | && | 30 | ||
double | 7 | \ | 31 | ||
if | 8 | \ | \ | 32 | |
else | 9 | ! | 33 | ||
do | 10 | = | 34 | ||
while | 11 | == | 35 | ||
continue | 12 | += | 36 | ||
for | 13 | -= | 37 | ||
switch | 14 | *= | 38 | ||
case | 15 | /= | 39 | ||
default | 16 | ++ | 40 | ||
break | 17 | — | 41 | ||
struct | 18 | ; | 42 | ||
typedef | 19 | ( | 43 | ||
const | 20 | ) | 44 | ||
static | 21 | [ | 45 | ||
return | 22 | ] | 46 | ||
id(变量名称) | 23 | { | 47 | ||
digit(数值) | 24 | } | 48 | ||
undefned | -1 | > | 49 | ||
< | 50 | ||||
>= | 51 | ||||
<= | 52 | ||||
% | 53 | ||||
!= | 54 | ||||
“ | 55 | ||||
‘ | 56 | ||||
: | 57 |
三 程序实现
参考文档和完整的文档和源码下载地址: