compilerone.cpp
来自「操作系统实验,实现词法分析,内含源文件的输入与扫描.」· C++ 代码 · 共 74 行
CPP
74 行
#include<fstream.h>
#include<iostream.h>
#include"get_code.h"
#include"analy_func.h"
void main()
{
LCode* head;//代码链链首
LCode* pS;//代码链当前节点位置
head=InPutCode();//读取文本放入链表并返回其链首,链表结构见get_code.h
pS=head;
char cCode;//当前读出的字符
char strToken[15];
int iCode;
const int iLength=sizeof(strToken);
/////
InitStr(strToken,iLength);//初始化数组
//////////action////////////
int iTemp=0;
while((pS->cCode)!=NULL)
{
cCode=GetCode(pS);
GetBC(pS,cCode);
if(isLetter(cCode))//是标识符或保留字
{
while(isLetter(cCode) | isDigit(cCode))
{
ConCat(strToken,cCode);
cCode=GetCode(pS);
}
Retract(pS);
iCode=Reserve(strToken);
cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
}
else if(isDigit(cCode))//是常数
{
while(isDigit(cCode))
{
ConCat(strToken,cCode);
cCode=GetCode(pS);
}
Retract(pS);
cout<<"(3"<<","<<"\""<<strToken<<"\""<<")"<<endl;
}
else if(isOperator(cCode))//是运算符
{
ConCat(strToken,cCode);
cCode=GetCode(pS);
if(cCode=='=')
{
ConCat(strToken,'=');
}
else
{
Retract(pS);
}
iCode=Reserve(strToken);
cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
}
else if(isSeparator(cCode))//是分隔符
{
ConCat(strToken,cCode);
iCode=Reserve(strToken);
cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
}
else if(cCode=='"')
{
cout<<"(6,\"\"\")"<<endl;
}
iTemp++;
InitStr(strToken,iLength);//初始化数组
}
////////////////////////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?