- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 词法分析器(Compiler Principle lexical analyzer)
编译原理 词法分析器(Compiler Principle lexical analyzer)
#包括 stdio. h
#包括字符串。”
#定义max_size 128
字符键[ ] [ max_size ] = {“暗淡”、“如果”、“做”、“停止”、“结束”};//定义关键字表
char * Concat(char * strtoken,ch)/连接函数
{
char温度[ 2 ];
温度[ 0 ] = CH;
临时[ 1 ] =“0”;/“0”为结束字符
将连接/ * * /(strtoken,温度);/ /将温度连接到strtoken并返回
返回strtoken;
} //是否为字母
int IsLetter(ch)
{
如果(((CH =‘A’)和(CH = z))| |((CH =‘A’)和(CH =“Z”)))
返回1;
其他的
返回0;
}
/ /是否为数字
int IsDigit(ch)
{
如果(“0”和“9”)
返回1;
其他的
返回0;
}
/ /是否是关键字
国际储备(char * strtoken)
{
为(int i = 0;i 38;i++)/数组标号最大为37,一共有38个数组
{
如果(0 = = strcmp(strtoken,关键[我]))
返回1;
}
返回0;
}
Bool isdim (char * strtoken)
{
For (int i = 0; I 3; I + +)
{
If (0 = = StrCmp (strtoken, dim))
{
Return 1;
}
}
Return 0;
}
Bool isstop (char * strtoken)
{
For (int i = 0; I 4; I + +)
{
If (0 = = StrCmp (strtoken, stop))
{
Return 1;
}
}
Return 0;
}
Bool isif (char * strtoken)
{
For (int i = 0; I 2; I + +)
{
If (0 = = StrCmp (strtoken, if))
{
Return 1;
}
}
Return 0;
}
Bool isdo (char * strtoken)
{
For (int i = 0; I 2; I + +)
{
If (0 = = StrCmp (strtoken, ))
{
Return 1;
}
}
Return 0;
}
Bool Isend (char * strtoken)
{
For (int i = 0; I 3; I + +)
{
If (0 = = StrCmp (strtoken, end))
{
Return 1;
}
}
Return 0;
}
/ / 词法分析函数
Void analysis (file * file)
{
Char strtoken [Max _ size];
Char ch;
While ((CH = fgetc (file). = EOF) / / 不到文件最后一直打开
{
/ / 将字符串清空
Memset (strtoken, 0, Max _ size);
If ((CH = = \ t) | | (CH = = \ n) | | (CH = = ))
{
}
Else if (isletter (CH))
{
而(IsLetter(CH)| | IsDigit(CH))
{
Concat(strtoken,CH);
CH =指针(文件);
}
fseek(文件- 1L,seek_cur);
/ /判断是否为关键字
如果(储备(strtoken))
{
如果(IsDIM(strtoken))
{
printf(“%s:$暗淡”,strtoken);
继续;
}
如果(IsDO(strtoken))
{
printf(“%s:$做\n”,strtoken);
继续;
}
如果(IsSTOP(strtoken))
{
printf(“%s:$停止\n”,strtoken);
继续;
}
如果(IsIF(strtoken))
{
printf(“%s:$如果\n”,strtoken);
继续;
}
如果(IsEND(strtoken))
{
printf(“%s:美元\n”,strtoken);
继续;
}
printf(“%s:为关键字\n”,strtoken);
}
其他的
{
printf(“%s:$id \n”,strtoken);
}
}
如果(IsDigit(CH))
{
而(IsDigit(CH))
{
Concat(strtoken,CH);
CH =指针(文件);
}
/ /让文件流指针后退一个字节
f
您可能关注的文档
- 细木工板制作基本知识(Basic knowledge of blockboard production).doc
- 给咨询员新人的点滴建议(Give advice to the consultant).doc
- 结构设计标准(Structural design standard).doc
- 给婴儿买衣服要注意事项!(Attention should be paid to buying clothes for the baby!).doc
- 给宝宝吃水果的学问(Knowledge of eating fruit for the baby).doc
- 经纬度与3度带,6度带的概念及其转换方法(The concept of latitude and longitude and 3 degree belts and 6 degrees belts and their conversion methods).doc
- 给力流行语(Awesome buzzwords).doc
- 给我七朵花(Give me seven flowers).doc
- 给排水工程中的阀门选用知识(Knowledge of valve selection in water supply and drainage works).doc
- 给我一斤面粉 还你5碗凉皮(Give me a pound of flour do 5 cold noodle bowl).doc
- 初中语文经典古文教学的有效性分析教学研究开题报告教学研究课题报告.docx
- 初中语文筛选与分析课文的方法探讨教学研究课题报告.docx
- 高中生物课程改革的挑战与对策教学研究课题报告.docx
- 高中生创造性思维训练的途径教学研究课题报告.docx
- 高中生科学实验报告写作的指导方法教学研究课题报告.docx
- 高中物理教学中概念图的应用实证研究教学研究课题报告.docx
- 教师情绪管理对教学效果的影响研究教学研究课题报告.docx
- 教师在课堂观察中的有效反馈机制研究教学研究课题报告.docx
- 初中生学习方式的变迁与教育应对教学研究课题报告.docx
- 初中生自我管理能力培养的研究教学研究课题报告.docx
文档评论(0)