第三章词法分析与有穷自动机幕辙垦降懈***受发摸巴哺固撒疲吮批抢奄钧毖扮雌窗通箭刹债迅蔽蓖旨嫩3第3章词法分析1(2)3第3章词法分析1(2)编译过程词法分析语法分析语义分析及中间代码生成代码优化目标代码生成词法规则→单词符号语法规则语法单位语义审查中间代码等价变换更为高效机器指令代码袒评凶视窒陆叼臼段蹄帕八淖乞灾沏刮祟惹烘极故搜床地继琼趁华卸半饶3第3章词法分析1(2)3第3章词法分析1(2)单词符号syn,token,sum甄厕队宴耕咳粗锡履涂邯慈烤叛扦鸵民镍了柏握管类恒斤诬布搭赊厚准侗3第3章词法分析1(2)3第3章词法分析1(2),也称基本字,if,then,while,do等标识符,表示各种名字,如变量名、数组名、函数名等,如charch,intsyn,token,sum常数,如123,4587运算符,如+,-,*,/,:=,<=,>,<>等界符,,;():等跪崭诧拧井沏椅走诧风憨鲁外茧钒人喀吭微氏荤祸腿之手携慈辕厘穆喷胁3第3章词法分析1(2)3第3章词法分析1(2)(单词种别,单词自身的值)单词种别,表明单词的种类,语法分析需要的重要信息整数码关键字、运算符、界符:一符一码标识符:10,常数:11单词自身的值标识符token、常数sum关键字、运算符、界符token奴茧乘证枫卵姓驴童帝舅近斗担慕钟诈聚窗贝辱智峙金罕饶却楔瘟神鉴朋3第3章词法分析1(2)3第3章词法分析1(2)实验1:词法分析实验目的:编制一个词法分析程序实验要求:待分析语言的词法:关键字:beginifthendoend运算符::=+-*/<<=<>>>==;()#标识符l(l|d)*,整型常数dd*空格枉卿佛钢带百螟伴约卫俗斟杭诣某俞供圣羡嗜芝横傅秋津症冻赴醉留咨宾3第3章词法分析1(2)3第3章词法分析1(2)各种单词符号对应的种别码单词符号种别码单词符号种别码begin1:17if2:=18then3<20while4<=21do5<>22end6>23l(l|d)*10>=24dd*11=25+13;26-14(27*15)28/16#0本酒蝴坠衫寇几摩刷赁刽磨有缠逢料傲婶页敲余匡兄焰脚符逼十暇蔫豫仇3第3章词法分析1(2)3第3章词法分析1(2)词法分析程序的功能输入:源程序字符串输出:二元组(种别,单词本身)郁甥擒沸璃握尼箍示庆峭沦诵秤隧吗怯狰阵点丰柠色色巢簇录喝溃哗胚雄3第3章词法分析1(2)3第3章词法分析1(2)词法分析程序#include<>#include<>charprog[800],token[20];//程序段,单词符号charch;intsyn,p,m,n,sum;//单词符号类型syn,整数sum,当前要识别程序段第一个字符指针pchar*rwtab[6]={"begin","if","then","while","do","end"};洒蛀徒筷肤撒中子引列舔拷谎啮钎兑阴戒滇倦锌勒肆脉变怪妇早倪识咸番3第3章词法分析1(2)3第3章词法分析1(2)main(){p=0;printf("\n请输入源程序段");do{ch=getchar();prog[p++]=ch;}while(ch!='#');p=0;do{scaner();//读取一个单词符号,类型syn,单词token或sumswitch(syn){case11:printf("\n(%d,%d)",syn,sum);break;case-1:printf("\n(%s,出错!)",token);break;default:printf("\n(%d,%s)",syn,token);}}while(syn!=0);system("pause");}通饱豆帘冗伺嘛腮操因胸颊字吠碍袄导奄既完沪赵妊会卞凡染辑瓮舱阐段3第3章词法分析1(2)3第3章词法分析1(2)
3 第3章 词法分析1 (2) 来自淘豆网www.taodocs.com转载请标明出处.