- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理词法分析(Compiler theory, lexical analysis)
编译原理词法分析(Compiler theory, lexical analysis)
#包含iostream
#包括字符串
使用名称空间;
#定义马克斯32
字符“=”;
int行= 1,行= 0;
/ /关键字表单词种别码1
字符串键“32”=“自动”、“中断”、“捕获”、“捕获”、“char”、“类”、“常量”、“继续”、“默认”、“删除”、“做”、“双”,
“其他”、“枚举”、“浮”、“对”、“如果”、“国际”、“长”、“新”、“私人”、“保护”、“公共”、“登记”、“回归”、“短”、“静”,
“结构”、“开关”、“这个”、“空”、“同时”};
/ /标示符表单词种别码2
字符串标识符[ 200 ];
/ /常数表单词种别码3
字符串常量[ 50 ];
/ /算术运算符表单词种别码4
字符串操作符[ 4 ] =“+”,“-”,“*”,“/”};
/ /界符表单词种别码5
字符串分隔符11“{”,“(”,“”),“[”,“”“,”“,”“,”“,”“{”,“}”,“!”“\”“};
/ /关系运算符表单词种别码6
字符串r_operators [ ] = {“”、“ =”,“= =”、“”、“ =“};
/ /关键字判断
int Iskey(字符串C){
int i;
对于(i = 0;i max;i + +){
如果(键i)比较(c)= 0)返回1;
}
返回0;
}
/ /判断是否为字母
int IsLetter(char c){
如果(((C≤Z)和(C>=a))| |((C≤Z)和(C =“”)))返回1;
否则返回0;
}
int IsDigit(char c){ //判断是否为数字
如果(C = 0和C = 9)返回1;
否则返回0;
}
/ /将ARR中的标示符插入符号表并且返回符号表的指针
int InsertId(String s){
对于(int = i 0;i 200;i + +)
{
如果(标识符i =“=”)
{
标识符[ i ];
还我;
}
}
返回0;
}
/ /将ARR中的常实数插入常数表并且返回常数表的指针
int InsertConst(String s){
对于(int = i 0;i 50;i + +)
{
如果(常数i =“=”)
{
常数[ i ];
还我;
}
}
返回0;
}
无效的分析(文件*外地个人识别号){
/ / ARR相当于课本中的strtoken
字符串arr =“”;
而((CH =指针(外地个人识别号))!= EOF)
{
ARR =“”;
如果(CH = =”| | CH = = \t | | CH = = \n)
{
如果(= =“n”)
行+;
行=0;
}
如果(IsLetter(CH))
{
而(IsLetter(CH)| | IsDigit(CH))
{
ARR = ARR CH;
CH =指针(外地个人识别号);
}
/ /文件指针回移一个位置
fseek(外地个人识别号,1l,seek_cur);
/ /列增加一
行+;
如果(Iskey(ARR))
{
cout ARR “T T(1,” ARR “)”
“T T关键字“”T T(“线”,“排“)”
endl;
}
其他的
{
对于(int = i 0;i 200;i + +){
如果(标识符[我]。比较(ARR)= = 0)
{ cout ARR “T T(2,” ARR ”)“”T T标示符“”T T(“线”,“排”)“ endl;断裂;}
别的{
插(ARR);
cout ARR “T T(2,” ARR ”)“”T T标示符“”T T(“线”,“排”)“ endl;break;}
}
}
}
/ /处理常数
如果(IsDigit(CH))
{
而(IsDigit(CH)| | CH = =“” IsDigit(指针(外地个人识别号)))
{
ARR = ARR CH;
CH =指针(外地个人识别号);
}
fseek(外地个人识别号,1l,seek_cur);
如果(IsLetter(CH =指针(外地个人识别号)))
{
而(IsLetter(CH)| | IsDigit(CH))
{
ARR = ARR CH;
CH =指针(外地个人识别号);
}
fseek(外地个人识别号,1l,seek_cur);
行+;
cout ARR “T“恐怖”“T teroor“”T T(“线”,“排”)“ endl;
}
别的{
行+;
对于(int = i 0;i 50;i + +)
{
如果(恒[我]。比较(ARR)= = 0)
{
cout ARR “T T(3,” ARR ”)“”T T常实数“”T T(“线”,“排”)“ endl;
打破;
}
别的{
您可能关注的文档
- 答题技巧 target=_blank(Answer skills target=_blank).doc
- 策划基本功(Planning basic skills).doc
- 第五章原子结构与元素周期律(The fifth chapter is atomic structure and periodic law of elements).doc
- 糙米水(Brown rice water).doc
- 繁体字大全适合自主招生(Traditional Chinese characters are suitable for independent enrollment).doc
- 策划改变人生营销推动世界(Plan, change life, marketing, promote the world).doc
- 粗鄙文化造就贫穷的富饶(Vulgarity breeds poor wealth).doc
- 编写html代码(Writing HTML code).doc
- 编导培训 编导专业-影评写作 讲解(Directing, training, directing and directing - film review and writing).doc
- 编程实践(Programming practice).doc
- 浙江国企招聘-2024宁波甬山控股集团有限公司招聘3人笔试模拟试题及答案解析.docx
- 2025中国银行中银金融科技有限公司招聘30人笔试模拟试题及答案解析.docx
- 浙江国企招聘-2024浙江省对外服务有限公司嘉兴分公司公开招聘笔试模拟试题及答案解析.docx
- 2025中国银行西藏区分行招聘15人笔试模拟试题及答案解析.docx
- 宜春市人力资源服务有限责任公司招聘笔试模拟试题及答案解析.docx
- 江西兄弟医药有限公司招聘笔试模拟试题及答案解析.docx
- 浙江国企招聘-2024杭州万丰置业有限公司公开招聘2人笔试模拟试题及答案解析.docx
- 部编五上语文《月迹》课件1教育教学资料.pptx
- 2025中国银行审计北京分部招聘7人笔试模拟试题及答案解析.docx
- 德阳建设工程集团有限公司2024年第三次公开招聘(50人)笔试模拟试题及答案解析.docx
文档评论(0)