[源码和文档分享]基于Java实现的词法分析程序
一 需求分析
自己编写、调试一个词法分析程序,并对程序输入语句进行词法分析,从而更好的理解词法分析的原理。
二 程序设计
此程序用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 |
三 程序实现
参考文档和完整的文档和源码下载地址:
浙公网安备 33010602011771号