网学网为广大网友收集整理了,业务规则引擎词法分析之过程分析及应用,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.3算法设计思想 本算法主要利用状态转换图生成一个词法分析器,对输入的程序进行词法分析,并生成五个表:关键字表、标识符表、常数表、运算符表、分隔符表[22]。其中关键字表和分隔符表的大小是由高级语言的子集决定的,可以用数组装载[20];而标识符表和常数表的大小取决于输入的待分析程序中的变量、过程名、常数的个数,所以要用指针组成动态链表来装载[20]。 设计词法分析器的时候,先读出源文件中所有字符串,按照源程序原样输出,把所有的字符串存入一个缓冲区内[19],然后定义一个Token指针数组对缓冲区内的字符串进行匹配[19]。匹配功能根据字符串的属性[23]由函数进行判定。 4.3.3注意事项 1)fseek函数的使用保证指针能够合理的跳转,避免个别字符没有被函数判别匹配;2)C语言中标示符中可以含有数字字母下划线,其中第一位的只可以是字母; 3)数字包括浮点和整数涉及到小数点,判断是否是数字的同时要考虑到非数字的小数点[22]; 4)自定义的字符数组本身是字符串应该结尾是’\0’不能缺省[22]。 4.4词法分析流程图 流程图是人们对解决问题的方法、思路或算法的一种描述。通过流程图的描述,我们可以很清楚地知道词法分析的详细过程。下面将列举出词法分析的总体流程图、判断标识符和数字的流程图和处理字符串函数dealword的流程图。 4.4.2判断标识符和数字的流程图 在特殊的标识符进行词法分析时,尤其注意判别宏和一般标识符,数字和一般标识符。标识符是以字母或者下划线开始的,如果是以数字开始则可以判定其为数字常数。判断字符串较为困难的是一般标识符与特殊的宏和关键字的识别。在算法的实现中,是通过把C语言常用的宏定义在一个数组里面,把C语言中一些常用的关键字定义在另外一个数组里。我们通过扫描字符串,缓存在Token数组里与宏数组和关键字数组进行匹配。如果两者都不是,则可以判定它是一般标识别符。这样可以提高词法分析的效率,节省了整个编译过程的时间和空间[25]。我们可以通过下面的流程图清楚了解标识符与数字的识别过程,如图4.2所示 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |