编译原理之词法分析实验(附完整C/C++代码与总结)

慈云数据 2024-05-11 技术支持 35 0

一、实验内容

        通过完成词法分析程序,了解词法分析的过程。编制一个读单词程序,对PL/0语言进行词法分析,把输入字符串形式的源程序分割成一个个单词符号,即基本保留字、标识符、常数、运算符、分界符五大类。

        对PL/0语言进行词法分析,把输入的字符串形式的源程序分割成一个个单词符号,其词法描述如下:

(1)关键字:

begin,call,const,do,end,if,odd,procedure,read,then,var,while,write

(2) 标识符:用来表示各种名字,必须以字母开头小于10位字符组成

(3) 数字:以0-9组成小于14位的数字

(4) 运算符:+,-,*,/,:=,=,#

(5) 分界符:, ,. ,; ,( ,)


二、实验代码

#include
#include
#include
#include
using namespace std;
//创建四个表,储存符号 
const char *k[13]={"begin","call","const","do","end","if","odd","procedure","read","then","var","while","write"};//关键字表
const char *s1[5]={",",".",";","(",")"};//界符表
const char *s2[6]={"+","-","*","/","++","--",};//运算符号表 
const char *s3[9]={"",">=","=",">",">=","",":=","#"}; //关系运算符号表 
//定义全局变量
int row=1,line=1; 
int t,p=0;//单词类别码以及记录移动指针
char instring[100];//保存输入的程序代码缓存数组
char outtoken[10];//输出
char ci[8],id[10];//暂时保存数字和字符
//函数的声明
void analysis();//分析函数,决定调用哪个函数进行分析
void symbol();//分析以非字母数字开头的字符
void constant();//分析常数
void alphabet();//分析标识符和关键字
void show();//打印输出函数
bool isnumber(char x);//判断是否是数字 
bool isalpha(char x);//判断是否是字母 
int main(){
	cout
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon