是howdyads文件序号为在该文件的第行第9列处是一个类型为package的实体名字“Howdy”的开始第4行第0列处是包Howdy声明的结束并且在文件序号为2的文件即howdymainadb中该包被三次引用引用的地方分别是第行第6列第4行第5列以及第5行第5列5Ada语言静态分析器的实现剖析了Ali文件所包含的信息之后发现其记录的交互引用信息对于Ada代码的静态分析器的编写十分有用且方便于是想到利用这些有用的信息对Ada源代码进行静态分析51Ali文件内信息的读取Ali文件中的信息不能直接利用必须将其读取出来保存到我们可以利用的数据结构中然后进行后续的处理Ali文件内的信息以行为单位不同的信息有不同的格式其含义已在前面的章节中介绍过根据其信息的不同内容我们设计表1type说明表2typeref说明表3refs的type说明4082012-05-162012-05-162012-05-162012-05-162012-05-162012-05-16软件设计开发本栏目责任编辑谢媛媛了如下的结构体链表来存储这些信息structALI_UNITunsignedintlinechartypeunsignedintcolcharlevelcharentitystructI_REFparentstructI_REFcurrentstructI_REFexternalstructI_UNITnext存储每个实体单元的信息即读取交互引用信息行linetypecollevelentityrenameref这部分内容记录下实体单元的行号列号类型可见性以及实体单元的名字renameref部分如果是继承类型即R则记下父类型的信息。
structL_REunsignedintnumberunsignedintlinecharref_typeunsignedintcolstruct_REnext存储每个实体单元被引用的信息即读取交互引用信息行refsfile’’linetypecol...部分的内容记录下实体单元被引用所在的文件被引用处的行号和列号被引用的类型structI_IEchartypeunsignedintnumbercharfilenamestructI_UNITunitsstructI_IEnext存储所有有关的文件的信息即当读到li文件中X、U、W开头的信息行时记录下文件的类型、序号、名字以及该文件中的所有实体单元。
此处文件类型是指是主文件引用文件还是系统文件。
struct_DEPENDENTunsignedintadb_flagunsignedintnumbercharfilenamestruct_DEPENDENTnext存储整个da工程编译时依赖的文件的信息即读到以D开头的信息行时记录下文件是否为adb文件记录文件的序号名字。
struct_COMPER_UNTstruct_Eself_liststruct_Eref_liststruct_Esys_liststruct_DEPENDENTdep_listcharself_name_listunsignedintname_list_lenstruct_COMPER_UNTnext存储主文件列表引用文件列表系统文件列表依赖文件列表主文件名字列表主文件名字列表的长度。
读完li文件之后这些结构体所保存的信息是进行后续分析的基础。
因此这些结构体的具体结构可根据对da语言静态分析的具体要求和所要达到的程序来进行设计便于后续分析和处理。
5.2Lex词法分析EXlexicalcompiler是在Unix下设计出来的一个优秀的计算机词法分析工具。
主要功能是生成一个词法分析器scanner的C
源码需要先编写描述词法分析器的文件经过ex便以后生成一个lexyy.c的文件该代码经过编译可以被程序员作为库文件调用我们用ex对所有da文件除了系统文件进行词法分析得到单个的词法元素最后输出的结果是对于每一个文件都有charresult指向存储词法元素的空间的指针unsignedintline_eindex指向对应的词法元素的行号信息unsignedintcol_eindex指向对应的词法元素的列号信息我们可将得到的结果存储如下的结构体中structE_EEMENTcharfilenameE_NME_ENcharelementunsignedintcol_eindexunsignedintline_eindex朱烨等基于ALI的AD语言静态分析器的研究与实现14092012-05-162012-05-162012-05-162012-05-162012-05-162012-05-16本栏目责任编辑谢媛媛软件设计开发ComputerKnowledgeAndTechnology电脑知识与技术2008年第4卷第6期总第33期上接第1398页4结束语XML是Web上表示结构化信息的一种标准文本格式。
3XML的发展在不断完善其在数据交换上的优势也越来越明显。
本毕业设计选题平台使用XML进行小数量的数据存储同时使用已经非常成熟和易用的ASP技术对其进行操作其优点在于不仅能够较快速的进行软件的开发实现所要求的功能而且维护成本也相对较低。
参考文献1唐泽圣.新概念电脑教程提高版M.北京:电子工业出版社2001.2尚俊杰.网络程序设计基础M.北京清华大学出版社200.MorrisonM.XML揭秘—入门·应用精通M.陆新年陆新宇译.北京清华大学出版社2001.当处理实体的从属关系时就需要用到这个结构体链表因为实体会有开始与结束两个行列号位置记录遍历此结构体链表当结构体内的行列号与实体开始处行列号匹配时通过遍历计数器就可得到实体开始时其名字在词法元素表Result中的位置in-dex1同法可得结束处对应的index2有了两个实体的这两个index值就可知道一个实体是否是嵌套在另一个实体内部这对画出程序结构图是很关键的。
5.3综合处理为了得到清晰的程序结构图还需对前面读li文件得到的结构体内存储的信息进行再分析再处理。
因此根据实体的不同类型我们设计出如下的目标结构体structUNIT存储arrayobjectexceptstring、arraytypeexceptstring、Booleantype、class-wideobject、class-widetype、non-Booleanenumerationobject、non-Booleanenumerationtype、floating-pointobject、floating-pointtype、signedintegerobject、signedintegertype、modularintegerobject、modularintegertype、enumerationliteral、namednumber、ordinaryfixed-pointobject、ordinaryfixed-pointtype、accessobject、accesstype、recordobject、recordtype、stringobject、stringtype、exception等类型的数据信息。
structCLL存储被调用的实体的有关信息包括被调用处的文件行列号等。
structBODY存储genericpackage、package、taskobject、tasktype、genericprocedure、procedure、genericfunctionoroperator、func-tionoroperator、protectedobject、protectedtype、entryorentryfamily等类型的数据信息包括名字类型声明的位置体的位置在体中包含的UNIT即structUNIT结构体中保存的UNIT的子集体中嵌套的其它BODY即子BODY体中调用的实体最后整合到一个结构体方面使用structRESstructBODYrootstructBODYbodysstructUNITunitsstructCLLcallsstructFILE_RESfileFILE_NUM有了这个总结性的结构体我们可以方便的画出程序结构图root记录了最外层的实体BODY有了这个根结点再遍历bodys就可以画出一个数状结构的图根据calls还可以得到调用关系图至此静态分析就结束了6总结计算机语言的静态分析是很复杂且耗费时间的找到有用的工具作为分析的基础是很重要的li文件就是da程序静态分析的有用工具本文首先介绍了li文件的生成过程接着剖析了li文件的内容分析其包含的信息对da语言静态分析的有用性进而介绍了利用li文件所带的信息来编写da程序静态分析器的主要思路和过程希望能给从事da语言编码与研究的工作者一定的参考和启发参考文献1daCoreTechnologiesInc.lib-xref.adsEB/OL.2001.2daCoreTechnologiesInc.lib-xref.adbEB/OL.2002.daCoreTechnologies.GNTUsersGuideforUnixM/OL.2002.4FreeSoftwareFoundation.GNTReferenceManualM/OL.2002.5XGCSoftware.XGCUsersGuideM/CD.2001.6XGCSoftware.M1750daTechnicalSummaryM/CD.200.7田淑清谭浩强.da导论M.北京:清华大学出版社1988.8陈火旺刘春林.程序设计语言编译原理M.版.北京:国防工业出版社2004.9杨作梅张旭东.lex与yaccM.2版.北京:机械工业出版社200.14102012-05-162012-05-162012-05-162012-05-162012-05-162012-05-16
上一篇:
指纹识别系统目录
下一篇:
画一卷情长,念一世安好