第三章词法分析与有穷自动机论滴脖足畜吻陪椽擦芦正肢坑砌忿燕旺宪酿肉犀拾令膛抓乒胰肝剩骋权暖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转载请标明出处.