编译原理 实验(一).doc

上传人:桔**** 文档编号:544976713 上传时间:2022-10-02 格式:DOC 页数:9 大小:81.50KB
返回 下载 相关 举报
编译原理 实验(一).doc_第1页
第1页 / 共9页
编译原理 实验(一).doc_第2页
第2页 / 共9页
编译原理 实验(一).doc_第3页
第3页 / 共9页
编译原理 实验(一).doc_第4页
第4页 / 共9页
编译原理 实验(一).doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《编译原理 实验(一).doc》由会员分享,可在线阅读,更多相关《编译原理 实验(一).doc(9页珍藏版)》请在金锄头文库上搜索。

1、实验编号:词法分析(1)一、 实验目的及要求设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1 待分析的简单的词法(1)关键字: begin if then while do end所有的关键字都是小写。(2)运算符和界符: = + - * / = = = ; ( ) #(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:ID = letter (letter | digit)*NUM = digit digit*(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。2 各种单词符号对应的种别码:表2.

2、1 各种单词符号对应的种别码单词符号种别码 单词符号种别码bgin1:17If2:=18Then320wile421do523lettet(letter|digit)*10=24dight dight*11=25+13;2614(27*15)28/16#03 词法分析程序的功能:输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。例如:对源程序begin x:=9: if x9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:(1,begin)(1

3、0,x)(18,:=)(11,9)(26,;)(2,if)二、 实验环境Microsoft Visual Studio VC6.0三、 算法描述是 返回是否文件结束? 是否字母拼字符串 数字 其他运算符、 符号界符等符号是否关键字?返回拼数 否对不同符号给出相应的syn值报错syn=10 是syn=1111syn为对应关键字的单词种别码图 3-2四、 源程序清单#include stdio.h#include iostream.h#include stdlib.h#include string.h#define _KEY_WORD_END wainting for your expending

4、typedef struct int typenum;char * word;WORD;char input255;char token255=;int p_input;int p_token,p;char ch;char * rwtab=begin,if,then,while,do,end,_KEY_WORD_END;WORD * scaner();void main()int over=1;WORD * oneword=new WORD;printf(请输入文法的源程序字符串(按#键结束):);scanf(%#s,input);p_input=0;printf(源程序为:n%sn,inpu

5、t);while(overtypenumtypenum,oneword-word);over=oneword-typenum;printf(n按 # 键退出:);scanf(%#s,input);char m_getch()ch=inputp_input;p_input=p_input+1;return(ch);void getbc()while(ch= | ch=10)ch=inputp_input;p_input=p_input+1;void concat()tokenp_token=ch;p_token=p_token+1;tokenp_token=0;int letter()if(ch

6、=a & ch=A& ch=0&chtypenum=10;myword-word=;p_token=0;m_getch();getbc();if(letter()while(letter()|digit()concat();m_getch();retract();myword-typenum=reserve();myword-word=token;return(myword);elseif(digit()while(digit()concat();m_getch();retract();myword-typenum=20;myword-word=token;return(myword);els

7、eswitch(ch)case=:m_getch();if(ch=)myword-typenum=39;myword-word=;return(myword);retract();myword-typenum=21;myword-word=;return(myword); break;case+: myword-typenum=22; myword-word=+; return(myword); break;case-: myword-typenum=23; myword-word=-; return(myword); break;case*: myword-typenum=24; mywor

8、d-word=*; return(myword); break;case/: myword-typenum=25; myword-word=/; return(myword); break;case(: myword-typenum=26; myword-word=(; return(myword); break;case): myword-typenum=27; myword-word=); return(myword); break;case: myword-typenum=28; myword-word=; return(myword); break;case: myword-typen

9、um=29; myword-word=; return(myword); break;case: myword-typenum=30; myword-word=; return(myword); break;case: myword-typenum=31; myword-word=; return(myword); break;case,: myword-typenum=32; myword-word=,; return(myword); break;break;case: myword-typenum=33; myword-word=:; return(myword); break;case;: myword-typenum=34; myword-word=; return(myword); break;case: m_getch();if(ch=)myword-typenum=37; myword-word=; return(myword);retract();myword-typenum=35;myword-word=; return(myword);break;casetypenum=38; myword-word=; return(myword);retract();myword-typenum=36;myword-word=typenum=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号