实验内容及要求:

(1)C++源代码扫描程序识别C++记号。

C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。

(2)打开一个C++源文件,打印出所有以上的记号。

(3)要求应用程序应为Windows界面。

(4)选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本。因此,程序中还应该有这样的压缩功能。

(5)选作部分:进一步思考或实现——如何进一步实现减小源文件大小的压缩功能。

C++源代码单词扫描程序(词法分析)

C++源代码单词扫描程序(词法分析)

思路:

(1)由于需要处理特殊字符等,因此只能逐个字符扫描;

(2)观察上述要求的记号:标识符、关键字、数、特殊符号、运算符号(暂时不考虑注释和字符串,比较特殊后面再进行处理),可以发现这些记号几乎都被特殊符号分割开来了,如空格符、换行符、制表符、逗号、分号等;

(3)分词: 也就是说我们再逐个字符扫描的时候,若遇到这些特殊字符,要么就是某个记号的结束,或者记号本身(分号、逗号也是记号,即特殊符号);而我们扫描过程中,正在处理的字符若不是特殊符号,可以暂存起来,直到遇到结束符,然后把之前缓存起来的字符组合成一个词;

(4)类型判断:经过一轮扫描之后,我们就会得到一个个划分号的词,此时再进行记号类型的判断就容易多了;

(5)当然,除了注释和字符串需要特殊处理外,还有一些特殊字符不一定只有一个字节,比如(++,--)这些是两个字符作为一个整体,若按上面进行分词,这些记号就会被切分开来,不符合要求;这里我们也可以把无法判断是否多个字节的特殊字符缓存起来,等到下一个能确定结束的字符再进行处理;

 

 

程序运行效果图:

C++源代码单词扫描程序(词法分析)

相关文章:

  • 2022-01-24
  • 2022-02-21
  • 2021-08-07
  • 2021-04-18
  • 2022-12-23
  • 2021-11-26
  • 2022-01-31
猜你喜欢
  • 2021-09-11
  • 2022-12-23
  • 2021-11-18
  • 2021-07-27
  • 2021-07-15
  • 2021-09-06
  • 2022-12-23
相关资源
相似解决方案