编译原理-1-词法分析

来源:互联网 发布:c语言逻辑或怎么打 编辑:程序博客网 时间:2024/05/22 18:24

在上一篇文章中,大致介绍了下编译过程。从这篇文章开始,我们就开始逐步慢慢深入的学习编译过程中的步骤。今天我们就来具体看看词法分析到底是怎么回事。

========================华丽丽的分割线============================================

     

int fun(int a,int c);int m=10;int main(){    int i=4;    int j=5;    m = fun(i,j);    return 0;}int fun(int a,int b){    int c=0;    c=a+b;    return c;}
  对于如上源码,在计算机上存储的形式与如上我们看到的形式不同,以16进制形式展现的话,上述c语言代码看上去就是:

   696E742066756E28696E7420612C696E   742063293B0D0A696E74206D3D31303B   0D0A696E74206D61696E28290D0A7B0D   0A20202020696E7420693D343B0D0A20   202020696E74206A3D353B0D0A202020   206D203D2066756E28692C6A293B0D0A   2020202072657475726E20303B0D0A7D   0D0A0D0A696E742066756E28696E7420   612C696E742062290D0A7B0D0A202020   20696E7420633D303B0D0A2020202063   3D612B623B0D0A202020207265747572   6E20633B0D0A7D
   看到上述的一连串数字,心里肯定想:这TM啥玩意?给个提示:想到了ASCII码表了么?明白了吧。

    好,咱们现在就根本ASCII码表,来翻译上述一连串数字到底是啥玩意:


 69  6E   74  20    66  75   6E  28  69  6E  74  20   61  2C  69    6E

   i      n      t    空格   f    u      n     (     i      n     t   空格 a      ,        i      n

   74    20     63   29  3B  0A  69   6E   74  20   6D   3D   31   30  3B

    t    空格    b     )       ;    \n       i     n     t   空格   m     =      1     0      ;

    ……

  根据不同语言的要求,遍历一连串数字,切分出符号并提取出信息。

例如对于c语言来说,可用使用如下状态图来切分符号,提取出标识符、数字、符号等。


     一句话总结:词法分析就是根据输入的一连串数据,根据语言特性,切分出有用的标识符、符号等信息,为下一步语法分析做准备。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玻尿酸鼻子宽了怎么办 被昆山市圆通快递公司骗怎么办 借壳上市后壳公司怎么办 盐城国有民办学校倒闭教师怎么办 联想复印机显示更换墨粉盒怎么办 襄垣县共公自行车卡怎么办 转南京江宁户口怎么办儿童医保 剑与家园鬼服怎么办 花生苗出现虫洞怎么办 被蝎子草扎到手怎么办 被蝎子草蛰了怎么办 螫麻子草扎了怎么办 苹果app没删除干净怎么办 字写的太潦草看不懂怎么办 肝内胆管结石疼怎么办 肝内胆管有结石怎么办 肝里胆管有结石怎么办 被信任的人算计你怎么办 卡罗拉1.8油耗高怎么办 请问09年途锐柴油版怎么办 油电混合没电了怎么办 前向运动精子3%怎么办 精子活力正常精子活率低怎么办? 精子形态正常率低怎么办 前向运动精子20%怎么办 不运动精子率高怎么办 前向运动精子少怎么办 精子前向运动力低怎么办 精子异常形态率高怎么办 精子正常率才1%怎么办 精子头部缺陷率高怎么办 前向运动精子15%怎么办 精子向前运动力低怎么办 前向运动精子10%怎么办 前向运动精子12%怎么办 前向运动精子2%怎么办 正常精子形态只有10%怎么办 精子混合畸形率高怎么办 正常形态精子才2怎么办 精子密度低至0.8怎么办 精子总活动率低怎么办