本项目提供了一个使用C语言编写的词法分析器源代码及其详细报告。该分析器能够识别特定编程语言中的关键字、标识符等元素,并附带解析过程和技术细节的文档说明。
一、实验目的:调试并完成一个词法分析程序,并加深对词法分析原理的理解。
二、实验要求:
1. 待分析的简单语言的词法规则如下:
- 关键字包括:begin, if, then, while, do, 和end. 所有关键字都是小写。
- 运算符和界符包括::=, +, -, *, /, <, <=, <>, >, >= , =, ;,(,).
- 其他单词则为标识符(ID)或整型常数(NUM),定义如下:
ID = letter (letter | digit)*
NUM = digit digit*
- 空格由空白、制表符和换行符组成。在词法分析阶段,这些空格通常被忽略。
2. 单词符号对应的种别码如下:
```
begin: 1, if: 2, then: 3, while: 4, do :5 , end :6
:= :18 ; :26 ( :27 ) :28 # :0
letter(letter|digit)*:10 digit digit* :11 *:13 /:14 +:15 -:16 <: 23 <=: 22 <>: 21 >: 20 >=: 24 = :25
```
3. 词法分析程序的功能:
输入为给定文法规则的源代码字符串。
输出是二元组 (syn, token或sum) 的序列,其中 syn 表示单词种别码;token表示实际单词自身字符串;sum代表整型常数。