首页 >> 知识 >> (C++)带你手肝词法分析器,容易理解,跟着思路有手就行

(C++)带你手肝词法分析器,容易理解,跟着思路有手就行

词法分析器 一.前言二.什么是“词法分析器”?三.正式设计1.设计种别码表2.设置判断为字母或数字的函数3.设置全局参数4.核心:scan()函数5.主函数里结合scan函数进行循环扫描6.结果截图7.需要注意(比较难)的地方 四.心得体会五.源代码

一.前言

编译原理的第一个实验:设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。

如果你有点思路但码力不足,可以跟着我一步步来手肝!

二.什么是“词法分析器”?

词法分析程序简单来说就是“读单词程序”, 该程序扫描高级语言编写的源程序,将源程序中由“单词符号”组成的字符串分解出一个个单词来。

单词符号分为5种: 1.保留字:例如C语言中的if、else、while、do等等 2.标识符:通常由用户自己定义。用来标记常量、数组、变量、类型等等。a,b,c等 3.常数:整型常数369、布尔常数TRUE等 4.运算符:如“+、-、*、/、” 5.界符:在语言中是作为语法上的分界符号使用的,如“,”“;”“(”“)”等

注意:保留字、运算符、界符的个数是确定的; 而常数、标识符则是不限定个数的。

词法分析器例子: 输入内容:源程序字符串。 例如“int a=1;a++;”

输出内容:输出的是与源程序等价的单词符号序列,并且所输出的单词符号通常表示成如下的二元式: (单词种别,单词自身的词)

单词种别:草莓视频在线观看APP可以类比成,每个种类都有相对应的“种别码”,即给对应的种别进行编号以加以区分。 就像自然界中,草莓视频在线观看APP可以将植物编号为0,动物编号为1等等

单词自身的词:就是说在同一种类的不同单词区别开来。 比如,动物中可以再细分:两栖动物内码编号为1,哺乳动物内码编号为2等

所以当草莓视频在线观看APP输入“小狗”,则输出二元式(1,2) 当然这只是形象的比喻,在计算机中草莓视频在线观看APP往往需要识别什么“int、a、+、-”等等符号,其实原理和刚刚举的例子有相同之处的。

[1] 流程图:

[2] 状态转化图:

三.正式设计 1.设计种别码表

由于实验里已经给出了,草莓视频在线观看APP就按照它纯cout出来就行了。

用一个函数showAll()来展示 ​​

void showAll() //展示部分单词符号所对应的种别码(可自行扩展){cout
网站地图