Welcome

首页 / 软件开发 / C# / 仿查询分析器的C#计算器——3.词法分析

仿查询分析器的C#计算器——3.词法分析2011-07-16 博客园 conexpress承接上一篇,这一篇讲如何把表达式转换成记号对象,这里就涉及到了编译原理中的词法分析。关于编译原理我不想多讲,毕竟我自己也不 怎么熟悉,现在只知道其中有个有限自动机的概念。不管什么概念,用代码实现才是最终目标。

因为不清楚字符串中到底包含什么字符,只能一个个字符进行处理,采用循环一次次向后取一个字符进行判断。这里建立一个TokenFactory 记号“工厂”类,由这个类负责对表达式进行分析并“生产”出TokenRecord对象。其中包括两个方法, LexicalAnalysis和ProduceToken。LexicalAnalysis用于词法分析,分析到符合规则的记号对象后调用ProduceToken方法,“生产 ”出对应的TokenRecord对象。这里偷了一点懒,把所有方法全部写成了static,这样就不用实例化多个子类了。

从这个类衍生出多个子类:

TokenKeywordFactory:用于处理关键字

TokenSymbolFactory:用于处理运算符

TokenStringFactory:用于处理字符串

TokenNumberFactory:用于处理数字

类图如下: